_list = []
for i in range(3):
def func(a):
return i+a
_list.append(func)
for f in _list:
print(f(1))
首先操作_list.append(func)传入func的mac地址,然后打印列表出现的f是func的地址,然后通过print调用func函数,单数range已经运行完i=2所以答案等于3
_list = []
for i in range(3):
def func(i):
def f_closure(a): # <<<---
return i + a
return f_closure
_list.append(func(i)) # <<<---
for f in _list:
print(f(1))
这里面append添加的是函数所以f循环迭代的f也是地址"func(i)"但是是有值得mac地址.