python-3.x 内部函数不打印非局部变量

yrwegjxp  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(117)

我有一个outer function2 inner functions.

def outer():
    x = 'hello'    
    def inner1():
        def inner2():
            nonlocal x
            x = 'python'        
        inner2()
        print(x)
outer()

字符串
为什么上面的代码没有打印x的值?
根据我的理解,它应该打印"hello"

lskq00tm

lskq00tm1#

你的代码调用了outer(),而outer()只执行一条语句:

x = 'hello'

字符串
就目前情况而言,您的问题中的代码将不会打印任何内容。
如果在调用outer()之后添加print(x)行,它确实会像您建议的那样打印"hello"
如果你要添加inner1()行来调用在outer()中定义的函数名,那么inner1()将反过来调用inner2(),这反过来又会导致x = 'python'执行,这会改变x的值(感谢inner2()中的nonlocal x行)inner1()中的print(x)语句将导致代码打印"python"

相关问题