Non-local Scope
The non-local scopes are outer local scopes. This means that the non-local scope is placed between global scope and function local scope:
Let's look at the code example:
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def first_outer():
first = "first_outer() local scope"
def second_outer():
second = "second_outer() local scope"
def inner():
third = "inner() local scope"
print("Inner non-local:", first)
print("Inner non-local:", second)
print("Inner local:", third)
inner()
second_outer()
first_outer()
123456789101112131415161718def first_outer(): first = "first_outer() local scope" def second_outer(): second = "second_outer() local scope" def inner(): third = "inner() local scope" print("Inner non-local:", first) print("Inner non-local:", second) print("Inner local:", third) inner() second_outer() first_outer()
The first_outer()
local and second_outer()
local scope are non-local scopes for the inner()
function.
Access to change non-local objects
You can change the non-local variable or another object using the nonlocal
keyword (similar to the global
keyword):
99
1
2
3
4
5
6
7
8
9
10
11
12
13
def outer():
some_variable = 255
def inner():
nonlocal some_variable
print(some_variable)
some_variable += 233
print(some_variable)
inner()
outer()
12345678910111213def outer(): some_variable = 255 def inner(): nonlocal some_variable print(some_variable) some_variable += 233 print(some_variable) inner() outer()
Note
Why pay attention to non-local scope?
The non-local scope is used for the closure. That's why non-local scope is also named enclosing scope. The closure will be described in the next section.
Everything was clear?
Thanks for your feedback!
Section 1. Chapter 4
Ask AI
Ask anything or try one of the suggested questions to begin our chat