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

各位大神,为什么f(j)里还要定义一个匿名函数,不能直接return j*j呢?谢谢

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

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


正在回答

2 回答

return j*j 返回的是一个是数值,而print f1(), f2(), f3()#fs中的元素是 函数,如果要使用return j*j,就用print f1 ,f2,f3

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

TypeError: 'int' object is not callable 它会报这个错误,我的理解是这样,可能不对,lambda匿名函数会根据后面的式子返回它对应的结果,那么类型也是一样,如果直接用return 就会出现类似类型不匹配的结果,因此用匿名直接计算并返回和它一样类型的结果。  以上是我的看法,我也是python白菜,如果你知道了正确的解释,麻烦告我一下,谢谢了。

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

举报

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

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

进入课程

各位大神,为什么f(j)里还要定义一个匿名函数,不能直接return j*j呢?谢谢

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