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`