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

求大神指导下例子的执行过程,我还是没有想明白为什么f1,f2,f3都是9

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

f1, f2, f3 = count()

正在回答

2 回答

返回的不是数值啊 ,明明就是地址

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

f1, f2, f3 = count() 

这句调用count函数,返回的是函数列表,[i*i,i*i,i*i]=count()而不是函数值。

fs.append(f)

这句将函数f加入到fs中去,等于fs中加入的是函数,而非函数值,fs=[i*i],所以当循环结束后,i已经是3了,所以最终的f1 f2 f3 再去计算i*i的时候就都是9了


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

举报

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

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

进入课程

求大神指导下例子的执行过程,我还是没有想明白为什么f1,f2,f3都是9

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