针对这道题一个疑问!小白。。。。。。。。。。。。。。。

# 希望一次返回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.”???真是没懂

asdhjhg
浏览 1209回答 1
1回答

qq_子非鱼焉知梦_0

http://www.imooc.com/wenda/detail/343715?t=230845 刚回答了一个类似的问题、可以去看下、
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python