您可以看到它,因为所有源自父函数的变量都被子函数内的实际值替换。这样,无需跟踪父函数的范围即可使子函数正确运行。
将其视为“动态创建函数”。
def maker(n):
def action(x):
return x ** n
return action
f = maker(2)
--> def action(x):
--> return x ** 2
这是python中的基本行为,对多个分配也是如此。
a = 1
b = 2
a, b = b, a
Python将其读取为
a, b = 2, 1
基本上,在对它们执行任何操作之前会先插入值。