【发布时间】:2020-09-23 07:10:48
【问题描述】:
def make_functions():
flist = []
for i in [1, 2, 3]:
def print_i():
print(i)
flist.append(print_i)
return flist
functions = make_functions()
for f in functions:
f()
这段代码的输出是:
3
3
3
问题:
- 为什么
print_i只捕获i的最终值? - 我们如何修改此代码以使其打印
1, 2, 3?
回答问题 #2 的一种方法如下,但我想知道是否有更优雅的方法来捕获 i 的值。
def make_functions():
flist = []
for i in [1, 2, 3]:
def print_i(j):
print(j)
flist.append((print_i, i))
return flist
functions = make_functions()
for f, i in functions:
f(i)
【问题讨论】:
标签: python python-3.x function nested-function