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

这个又怎么理解?

原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i

正在回答

2 回答

把函数名看成一个指针变量会好理解一些。。fs.append(f)实际上是把f这个指针变量添到了fs列表里,并没有真的调用f函数,然后一直循环到i=3。f1= count()是把f指针变量赋给f1。。当执行到print f1()时,f1指向函数f,这个时候才调用了f函数,但是这时i等于3了。f只是一个变量,f()才是调用了函数


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

weibo_你的crystal_0

还是不懂
2016-03-08 回复 有任何疑惑可以回复我~

我们知道高阶函数的一个作用就是延迟计算,在运行for循环的时候并没有计算i×i,这个运算要等到我们调用f1,f2,f3的时候才会计算i×i,  然而,当我们调用f1,f2,f3的时候,也就是要计算i*i的时候,这时候的i已经等于3,所以结果都是9。

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

举报

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

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

进入课程

这个又怎么理解?

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