我有一个outer function
和2 inner functions.
def outer():
x = 'hello'
def inner1():
def inner2():
nonlocal x
x = 'python'
inner2()
print(x)
outer()
字符串
为什么上面的代码没有打印x
的值?
根据我的理解,它应该打印"hello"
。
1条答案
按热度按时间lskq00tm1#
你的代码调用了
outer()
,而outer()
只执行一条语句:字符串
就目前情况而言,您的问题中的代码将不会打印任何内容。
如果在调用
outer()
之后添加print(x)
行,它确实会像您建议的那样打印"hello"
。如果你要添加
inner1()
行来调用在outer()
中定义的函数名,那么inner1()
将反过来调用inner2()
,这反过来又会导致x = 'python'
执行,这会改变x
的值(感谢inner2()
中的nonlocal x
行)inner1()
中的print(x)
语句将导致代码打印"python"
。