课程
/后端开发
/Python
/python进阶
原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i
2015-12-31
源自:python进阶 2-9
正在回答
把函数名看成一个指针变量会好理解一些。。fs.append(f)实际上是把f这个指针变量添到了fs列表里,并没有真的调用f函数,然后一直循环到i=3。f1= count()是把f指针变量赋给f1。。当执行到print f1()时,f1指向函数f,这个时候才调用了f函数,但是这时i等于3了。f只是一个变量,f()才是调用了函数
weibo_你的crystal_0
我们知道高阶函数的一个作用就是延迟计算,在运行for循环的时候并没有计算i×i,这个运算要等到我们调用f1,f2,f3的时候才会计算i×i, 然而,当我们调用f1,f2,f3的时候,也就是要计算i*i的时候,这时候的i已经等于3,所以结果都是9。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计