以下python示例来自here :
def f1():
x = 99
def f2():
def f3():
print(x)
print('f3')
f3()
f2()
f1()
这是输出:
99
f3
为什么输出不是下面的?
99
f3 # from f1()
99
f3 # from f3()
99
f3 # from f2()
请您参考如下方法:
这是因为随着代码的展开,它简化为:
x = 99
print(x)
print('f3')
这是展开的顺序:
def f1():
x = 99
def f2():
def f3():
print(x)
print('f3')
f3()
f2()
f1()
成为
x = 99
def f2():
def f3():
print(x)
print('f3')
f3()
f2()
成为
x = 99
def f3():
print(x)
print('f3')
f3()
成为
x = 99
print(x)
print('f3')
这就是执行的内容。
