PythonScope
A variable is only available from inside the region it is created. This is calledscope.
Local Scope
A variable created inside a function belongs to thelocal scope of that function, and can only be used inside that function.
Example
A variable created inside a function is available inside that function:
x = 300
print(x)
myfunc()
Function Inside Function
As explained in the example above, the variablex
is not available outside the function, but it is available for any function inside the function:
Example
The local variable can be accessed from a function within the function:
x = 300
def myinnerfunc():
print(x)
myinnerfunc()
myfunc()
Global Scope
A variable created in the main body of the Python code is a global variable and belongs to the global scope.
Global variables are available from within any scope, global and local.
Example
A variable created outside of a function is global and can be used by anyone:
def myfunc():
print(x)
myfunc()
print(x)
Naming Variables
If you operate with the same variable name inside and outside of a function, Python will treat them as two separate variables,one available in the global scope (outside the function) and one available in the local scope (inside the function):
Example
The function will print the localx
, and then the code will print the globalx
:
def myfunc():
x = 200
print(x)
myfunc()
print(x)
Global Keyword
If you need to create a global variable, but are stuck in the local scope, you can use theglobal
keyword.
Theglobal
keyword makes the variable global.
Example
If you use theglobal
keyword, the variable belongs to the global scope:
global x
x = 300
myfunc()
print(x)
Also, use theglobal
keyword if you want to make a change to a global variable inside a function.
Example
To change the value of a global variable inside a function, refer to the variable by using theglobal
keyword:
def myfunc():
global x
x = 200
myfunc()
print(x)
Nonlocal Keyword
Thenonlocal
keyword is used to work with variables inside nested functions.
Thenonlocal
keyword makes the variable belong to the outer function.
Example
If you use thenonlocal
keyword, the variable will belong to the outer function:
x = "Jane"
def myfunc2():
nonlocal x
x = "hello"
myfunc2()
return x
print(myfunc1())