python 闭包问题

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/