Обычно, 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