Я изучаю пространство имен и область применения Python, и для этого я следую Это Учебное пособие.Это заканчивается задачей предсказать, что выведет следующий код.
a = 'global'
def outer():
def len(in_var):
print('called my len() function: ', end="")
l = 0
for i in in_var:
l += 1
return l
a = 'local'
def inner():
global len
nonlocal a
a += ' variable'
inner()
print('a is', a)
print(len(a))
outer()
print(len(a))
print('a is', a)
Мой вопрос о блоке кода выше: как это возможно, что мы можем вызвать функцию len () внутри external ()?Итак, почему print (len (a)) вызывает функцию len () внутри external ()?
Когда я пытаюсь вызвать вложенную функцию, как я это делал ниже, она не будет работать.Может ли кто-нибудь просветить меня?:
print("Does my Inner get called automatically if I call my outer?")
def outer():
def inner():
print("Yes")
outer() #A call to outer does not call inner() automatically
print(inner()) #Gives a NameError