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

与标准答案差2行,错的原因什么?

def count():

    fs = []

    for i in range(1, 4):

        def f(j):       #函数中为什么要再定义一新的函数

            return j * j

        r = f(i)

        fs.append(r)

    return fs


f1, f2, f3 = count()

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


正在回答

3 回答

注意: fs.append(r)  这里r是一个int值, 所以函数count()最后返回的是一个列表, 最后只能是print(f1, f2,f3)  

0 回复 有任何疑惑可以回复我~
def count():
    fs = []
    for i in range(1, 4):
        def f(j=i):     #定义新的函数f,需要将函数外的变量赋值给f的参数j
            return j * j
        #r=f(i)这里定义的r是一个int值,fs.append(r)会报错int对象不能被调用,这里我也不太清楚
        fs.append(f)
    return fs
f1, f2, f3 = count()  #这里f1, f2, f3就是指向了定义的新函数f
print f1(), f2(), f3()  #这里调用了三次f,每调用一次f就是循环里i加一次
                        #如果加多一个f4,报错,因为range(1,4)只有三次循环



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

我搞懂了

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

慕雪6363006

- -,搞懂了吗?哈哈哈可以跟我说一下这个吗?r=f(i) fs.append(r)会报错int对象不可调用 是为什么
2018-08-01 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

与标准答案差2行,错的原因什么?

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