osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Can global variable be passed into Python function?


Sam <lightaiyee at gmail.com> writes:

> I need to pass a global variable into a python function.

Python does not really have the concept "variable".

What appears to be a variable is in fact only the binding of an
object to a name. If you assign something to a variable,
all you do is binding a different object to the name.

Thus, if you have:

      i = 1
      def f(x): x = 5

      f(i)

Then "i" will remain "1" and not become "5".
The effect of "x = 5" is that the name "x" gets bound to "5"
(where is formerly was bound to "1").

>However, the global variable does not seem to be assigned after the function ends. Is it because parameters are not passed by reference?

Python lacks the notion of "variable". Thus, it does not
pass variables into functions but objects.
The objects, however, get passed by reference.

>How can I get function parameters to be passed by reference in Python?

You can implement your own concept of variable, e.g. like this:

    class Variable(object):
      def __init__(self, value): self.value = value

The little program above then becomes:

    i = Variable(1)
    def f(x): x.value = 5

    f(i)
    i.value # this is now 5