我在这里不知所措。
我试图在for循环中定义一个函数。该函数使用在循环中定义的变量,看起来可能类似于:
myFuns = []
for i in range(10):
j = i + 4
def fun(): print(j)
myFuns += [fun]
在这个循环的末尾,myFuns中的函数是不同的,但是它们做的是相同的事情,因为显然,这不是传递给fun()的新变量j,而是j的引用
我很高兴知道如何传递j的值,而不仅仅是参考值
我不知道在循环中创建的变量可能比循环寿命长,所以这对我来说是一个新领域
Tags:
j
是一个自由变量,当fun
被称为时,它的值被查找fun
不会将当前值j
烘焙到其定义中。此外,缺少任何其他包含作用域,对fun
的调用将引用全局作用域中的j
,在全局作用域中,它的最后一个设置值是它在循环的最后一次迭代中的值要在
fun
中实际存储j
的固定值,需要将其作为带有默认值的参数传递:但是,关闭可能更合适:
相关问题 更多 >
编程相关推荐