我们在使用Python的匿名函数时,经常会生成临时函数然后在后面再调用,但是如果不注意就会出现意想不到的错误,譬如下面的代码:
我们期望看到的结果是 0、3、6、9,但是实际上显示出来的却是四个 9。
请修改上面的匿名函数代码,让下面循环调用函数 f(3)的结果为 0、3、6、9。
解决思路:
- 这个问题的本质是Python函数变量作用域里的闭包实现方式所导致的。
- 解决的方法有如下几种:
- 使用函数工厂模式
- 使用函数默认参数
- 使用 eval 方法
- 使用 yield 方法
- 使用 partial 方法
- 使用 tuple