Flash cards
Review the key moves
What is the main idea behind Python Scope?
Lesson checks
Practice each idea before moving on
Short Mimo-style checks built from this lesson's code, terms, and sequence.
Which statement best captures the main point of this lesson?
Complete the missing token from the example code.
___ myfunc():Put the learning moves in the order that makes the concept easiest to apply.
Scope
A variable is only available from inside the region it is created. This is called scope .
Local Scope
A variable created inside a function belongs to the local scope of that function, and can only be used inside that function.
Example
def myfunc():
x = 300
print(x)
myfunc()Function Inside Function
As explained in the example above, the variable x is not available outside the function, but it is available for any function inside the function:
Example
def myfunc():
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
x = 300
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):
xGlobal Keyword
If you need to create a global variable, but are stuck in the local scope, you can use the global keyword.
The global keyword makes the variable global.
globalAlso, use the global keyword if you want to make a change to a global variable inside a function.
globalNonlocal Keyword
The nonlocal keyword is used to work with variables inside nested functions.
The nonlocal keyword makes the variable belong to the outer function.
nonlocalThe LEGB Rule
Python follows the LEGB rule when looking up variable names, and searches for them in this order:
- L ocal - Inside the current function
- E nclosing - Inside enclosing functions (from inner to outer)
- G lobal - At the top level of the module
- B uilt-in - In Python's built-in namespace
Example
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print("Inner:", x)
inner()
print("Outer:", x)
outer()
print("Global:", x)