How to make a local variable (inside a function) global [duplicate] How to make a local variable (inside a function) global [duplicate] python python

How to make a local variable (inside a function) global [duplicate]


Here are two methods to achieve the same thing:

Using parameters and return (recommended)

def other_function(parameter):    return parameter + 5def main_function():    x = 10    print(x)        x = other_function(x)    print(x)

When you run main_function, you'll get the following output

>>> 10>>> 15

Using globals (never do this)

x = 0   # The initial value of x, with global scopedef other_function():    global x    x = x + 5def main_function():    print(x)    # Just printing - no need to declare global yet    global x   # So we can change the global x    x = 10    print(x)    other_function()    print(x)

Now you will get:

>>> 0    # Initial global value>>> 10   # Now we've set it to 10 in `main_function()`>>> 15   # Now we've added 5 in `other_function()`


Simply declare your variable outside any function:

globalValue = 1def f(x):    print(globalValue + x)

If you need to assign to the global from within the function, use the global statement:

def f(x):    global globalValue    print(globalValue + x)    globalValue += 1


If you need access to the internal states of a function, you're possibly better off using a class. You can make a class instance behave like a function by making it a callable, which is done by defining __call__:

class StatefulFunction( object ):    def __init__( self ):        self.public_value = 'foo'    def __call__( self ):        return self.public_value>> f = StatefulFunction()>> f()`foo`>> f.public_value = 'bar'>> f()`bar`