内部函数不打印非局部变量
Inner function not printing nonlocal variable
我有一个 outer function
和 2 inner functions.
def outer():
x = 'hello'
def inner1():
def inner2():
nonlocal x
x = 'python'
inner2()
print(x)
outer()
请帮我理解为什么上面的代码没有打印 x.
的值
根据我的理解,它应该打印 "hello"
您的代码调用 outer()
,而后者仅执行一条语句:
x = 'hello'
就目前而言,您问题中的代码不会打印任何内容。
如果您要在调用 outer()
之后添加行 print(x)
,它确实会按照您的建议打印 "hello"
。
如果您改为添加行 inner1()
以使用 outer()
中定义的名称调用函数,那么 inner1()
将依次调用 inner2()
这反过来会导致 x = 'python'
执行,这会改变 x
的值和(感谢 inner2()
中的 nonlocal x
行)语句 print(x)
在 inner1()
内会导致代码打印 "python"
.
我有一个 outer function
和 2 inner functions.
def outer():
x = 'hello'
def inner1():
def inner2():
nonlocal x
x = 'python'
inner2()
print(x)
outer()
请帮我理解为什么上面的代码没有打印 x.
根据我的理解,它应该打印 "hello"
您的代码调用 outer()
,而后者仅执行一条语句:
x = 'hello'
就目前而言,您问题中的代码不会打印任何内容。
如果您要在调用 outer()
之后添加行 print(x)
,它确实会按照您的建议打印 "hello"
。
如果您改为添加行 inner1()
以使用 outer()
中定义的名称调用函数,那么 inner1()
将依次调用 inner2()
这反过来会导致 x = 'python'
执行,这会改变 x
的值和(感谢 inner2()
中的 nonlocal x
行)语句 print(x)
在 inner1()
内会导致代码打印 "python"
.