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

为什么代码不能改成这样?报错如何解决?

我不知道在f里定义g的意义是什么,我觉得可以直接在f里使用x*x,只需要在r=f()那里调用一次f即可。所以改成:

def count2():

    fs=[]

    for i in range(1,4):

        def f():

            return i*i

        r=f()

        fs.append(r)

    return fs

    

f1,f2,f3=count2()

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

不知道这种模式可以与否,那么为什么会一直报错:

TypeError: 'int' object is not callable


正在回答

2 回答

函数在三次循环后 是f3()并不是 f1 2 3 循环相当于只执行了最后一次

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

因扎吉_ 提问者

追问:函数在循环内我就当场调用了啊?这如何解释呢?
2018-10-09 回复 有任何疑惑可以回复我~
#2

LSLZMJ 回复 因扎吉_ 提问者

同问,为啥什么他要继续循环,而不是直接导出呢
2018-10-13 回复 有任何疑惑可以回复我~

这样是可以的,不过你r=f()这里已经调用了函数所以r不是函数而是值所以f1 f2 f3都是值

把最后的print f1(),f2(),f3()后面的括号去了就行了不用在调用了

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

举报

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

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

进入课程

为什么代码不能改成这样?报错如何解决?

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