为了账号安全,请及时绑定邮箱和手机立即绑定

关于闭包中的自定义函数的参数

def count():
    fs = []
    for i in range(1, 4):
        def f(m=i):
            return m*m
        fs.append(f)
    return fs

f1, f2, f3 = count()
print f1(), f2(), f3()

在这段代码中,中间的

        def f(m=i):
            return m*m

是什么意思呢?我理解为在f中需要传入参数m,却令m=i?这样对不对?

正在回答

1 回答

在for i in range(1, 4) 这个迭代中 i 的值是一个会变动的值 在闭包中 不能引用会变动的变量值,所以不能直接用def f(i): return * i 因此需要把 每次迭代 i 的值 赋予一个变量 即(m = i) 定义函数写成def f(m=i): return 

0 回复 有任何疑惑可以回复我~
#1

轻风乍起3686015 提问者

那请问定义函数def f(m=i): return m * m 与def f(): m=i return m*m 有什么区别呢?
2017-03-22 回复 有任何疑惑可以回复我~
#2

轻风乍起3686015 提问者

非常感谢!
2017-03-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

关于闭包中的自定义函数的参数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信