Can global variable be passed into Python function?

dieter dieter at handshake.de
Fri Feb 21 02:23:19 EST 2014


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





More information about the Python-list mailing list