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

代码疑惑,求解

def count():    fs = []    for i in range(1, 4):        def f(i): return lambda :i*i        fs.append(f(i))    return fs f1, f2, f3 = count() print f1(), f2(), f3() 为啥在这个里边,如果写成return lambda i : i*i 就会报这个错误。

() takes exactly 1 argument (0 given)

正在回答

3 回答

lambda就是一个匿名函数,lambda i : i*i 就相当于def g(i):return i*i,而在 def f(i): return lambda :i*i中,f(i)已经声明了,lambda就是相当于接受了i的参数返回了i*i,如果写成return lambda i : i*i 就会因为重复声明i参数而报错。

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

问题是我没有报错就运行了,这让我很尴尬


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

def f(i) 已经声明一次i了,lambda i 的话,应该算重复声明

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

举报

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

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

进入课程

代码疑惑,求解

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号