python 闭包问题
问题:什么是闭包?
在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为 闭包。
问题:如何修改上面的 multipliers 的定义从而产生想要的结果?
- 一种解决方法就是用 Python 生成器。
def multipliers_1():
for i in range(4):
yield lambda x: i * x
print([m(2) for m in multipliers_1()])
- 另外一个解决方案就是创造一个闭包,利用默认参数立即绑定。
def multipliers_2():
return [lambda x, i=i: i * x for i in range(4)]
print([m(2) for m in multipliers_2()])
免费下载试用:
https://support.i-search.com.cn/