初级编程通关练习题 #10 – 匿名函数陷阱

我们在使用Python的匿名函数时,经常会生成临时函数然后在后面再调用,但是如果不注意就会出现意想不到的错误,譬如下面的代码:

lambda pitfalls

我们期望看到的结果是 0、3、6、9,但是实际上显示出来的却是四个 9。

请修改上面的匿名函数代码,让下面循环调用函数 f(3)的结果为 0、3、6、9。

解决思路:

  • 这个问题的本质是Python函数变量作用域里的闭包实现方式所导致的。
  • 解决的方法有如下几种:
    • 使用函数工厂模式
    • 使用函数默认参数
    • 使用 eval 方法
    • 使用 yield 方法
    • 使用 partial 方法
    • 使用 tuple