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

这样写为什么不可以啊

def count():

    fs = []

    for i in range(1, 4):

        def g(j):

            return j*j

        r = g(i)

        fs.append(r)

    return fs

   

f1, f2, f3 = count()

print f1(), f2(), f3()


正在回答

2 回答

从f1, f2, f3 = count()可以看出count()函数返回的fs这个list里是三个函数,意味着你往fr里append的参数r得是函数,也就是说g(i)得返回函数,所以要在g函数中再定义一个函数并让g返回这个函数。

然而你的代码中g返回的是一个int值也就是j*j的值而不是函数,所以出错

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

这样写f1,f2,f3就分别等于g(1),g(2),g(3),不存在f1()对应的东西,如果把输出改成print f1,f2,f3结果就还是1,4,9。如果要保留print f1(),f2(),f3()的话,就还需要在g的下面再定义一个函数,比如说:

def count():

    fs = []

    for i in range(1, 4):

        def g(j):

            def z():

                return j*j

            return z

        r = g(i)

        fs.append(r)

    return fs


f1, f2, f3 = count()

print f1(), f2(), f3()


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

举报

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

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

进入课程

这样写为什么不可以啊

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