f1,f2,f3分别代表f(1)?f(2)?f(3)?
f1,f2,f3分别代表f(1)?f(2)?f(3)?
这种写法从哪里来的?
f1,f2,f3分别代表f(1)?f(2)?f(3)?
这种写法从哪里来的?
2018-05-07
试着总结一下
这个题目的关键点,其实有三个部分
(1) f1,f2,f3 = count() 的赋值语句,也就是相当于f1=fs[0]; f2=fs[1]; f3=fs[3]
(2)print f1(), f2(),f3() ,也就是相当于 print fs[0](), fs[1](), fs[2]()
按前面学习的理解,这里是很大问题。为什么list元素可以像方法一样调用!!!这里要看前面我们在fs[]列表里面添加的是什么?
(3) fs.append(f) 这里看到我们是往fs[]列表里加入的并不是函数f()具体的执行结果,而是其执行过程【这个具体过程中i的值是多少并没有被固定下来】。
显而易见,当执行完成 renturn fs.append(f) 的时候,i的值已经变成3了。
所以在后面将三个被固化的“执行过程”再次执行的时候,是现在的值 3来进行的。
解决方法(一):
1.将fs.append(f) 改为 fs.append(f()) #在 fs 里加入具体执行结果
2.将输出语句,修正为 print f1,f2,f3 # fs 的内容已经不是执行过程,要相应变化
解决方式(二)
基于 fs.append(f) 那么 f 的具体执行过程不该牵扯到变量,涉及到的话要进行固化~
The end
举报