Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Non-local Scope | Scopes
Mastering Python: Closures and Decorators
course content

Course Content

Mastering Python: Closures and Decorators

Mastering Python: Closures and Decorators

1. Scopes
2. Closure
3. Decorators

bookNon-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:

123456789101112131415161718
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()
copy

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):

12345678910111213
def outer(): some_variable = 255 def inner(): nonlocal some_variable print(some_variable) some_variable += 233 print(some_variable) inner() outer()
copy

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?

How can we improve it?

Thanks for your feedback!

Section 1. Chapter 4
some-alt