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

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

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

def outer():
some_variable = 255

def inner():
nonlocal some_variable
print(some_variable)
some_variable += 233
print(some_variable)

inner()

outer()
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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt