《python学习手册》第505页作用域章节

作用域这里没有看懂,有没有人可以帮助我理解一下,什么叫嵌套函数被调用时才进行查找,为什么每次循环调用都是记住的4

img

img

里面匿名函数的调用相当于下面这样写:

acts=[]
for i in range(5):
    def fun(x):
        return i**x
    acts.append(fun)

可见循环四次,acts里保存了四个一样的函数fun,而里面这个变量 i 只有在运行函数 fun 的时候才从外层作用域,也就是 for in 所在的函数里查找当前 i 的值,也就是最后一次循环后的值 4


lambda 是匿名函数,相当于这个循环是在像acts列表里面添加的是一个函数

比如说你有一个函数
def a():
    print('函数')
b = a
b引用了a,你也可以这样去调用a()函数,b()

你的列表元素就相当于b的作用了,

ats[0]()就是在调用这个函数执行