Почему закрывающая функция обращается к переменной из области определения по сравнению с областью вызова в Python 3? - PullRequest
0 голосов
/ 24 января 2020

Обычно, fuction print_number() может получить доступ к переменной из области вызова number = 10 в Python 3:

def foo():
    def print_number():
        print(number)
    return print_number

print_number = foo()
number = 10
print_number()  # 10

Однако, когда переменная с таким же именем из области определения определена, функция print_number() больше не может получить доступ к переменной из области вызова number = 10:

def foo(number):
    def print_number():
        print(number)
    return print_number

print_number = foo(1)
number = 10
print_number()  # 1 rather than 10

print_number() обращено number = 1 из того места, где оно было определено, а не number = 10 из того места, где оно было вызвано. Почему это так?

Считается ли область определения ближе к дереву наследования областей, чем вызывает область? Если да, то почему?

Большое спасибо за ваше терпение помочь мне с моим любопытством. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...