# 希望一次返回3个函数,分别计算1x1,2x2,3x3 def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count()
这道题有错误,f1(),f2(),f3()最后都是9
很多人发表了原因,大都说的差不多的话,但是我没看懂他们说的。。。。。。为何
那好,就此问题:
最后的return fs 这是的fs应该是[locatian1,location2,location3],这三个应该是f()的三个地址
那么 题后的f1,f2,f3=count()转化为-->f1=location1;f2=location2;f3=location3
那么f1(),f2(),f3()实际上都是对应了自己的位置,return了自己对应的i*i啊,为何最后都是9???
为何说“因为虽然返回的参数分别是1,2,3,但这几个函数并没有计算,等到计算的时候(print f1, f2, f3...)i已经变成了3了,算以算出来都是9.”???真是没懂
qq_子非鱼焉知梦_0
相关分类