来大牛纠正下我的错误思维????

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2, f3 = count()
这个函数中,i的值是i=1的时候,返回 1,fs.append(f)就是fs = [1],以此类推得出的  fs = [1,4,9],没毛病吧。for 循环结束。最终返回的 lis就是 1,4,9  啊。。那么  f1,f2,f3 = count()不就是指的list中的  1,4,9嘛??为什么说是9,9,9  。虽然i 的值经for循环完以后变成了3,但是 fs 列表已经输出完毕了啊、、求指导。。。


匿瓞瓞
浏览 1309回答 2
2回答

艾尔森

仔细观察for循环的三次迭代,每次都是将f()函数添加到fs列表中(注意在fs中的是函数式而不是值) 所以你一开始说的在i等于1的时候 fs.append(f) 那样的话fs = [<function f <函数地址>>] 是一个函数 而不是值 所以等循环结束后返回的list里面就是存的三个函数 而这三个函数都是i*i ,并且这时for循环已经完成,i的值最终是3 所以当调用f1,f2,f3任意一个计算i*i的时候,输出结果都是9

慕瓜9220888

HBWFGJZWPBSBQLBKWYNODLXDWZMEFAJIBEXIRIGZRHTWWZBRTLOBBXOZBDIEOTSSAYQZYLFLCKVKWPFIIXIKGIRUXXRUPLMFFIVUTZRMILILYCVKTMTZTNOTYATCMPQEPOQPMUGDWSDJMXTTJKZRTJCLSCDDJKORQAZAFNPIRRUNOGVNGSMMJUFEWPSSYUQODJVSVBPODMBLMMXGVKJUUBSSKLNFUFVVOSKLQMDGAQQBZYANOBRWKZILSPFYOCPHANKRIIEQJLSZFIMRJCBSVCCGYAAIZRMGRZZYCJQGHWGWVEUVVFCKNCNNDAWMUVXWPZVVMAWVVVCCMPDFHCFILOCNLDQWJJPFZLKFVCVOVZASAJQSPRCUEDMFCVYJERDGWCSAHQGFRBCIQYHMFCJMDDLQPIZREIDVOXWNTKEGUNMBVFMYFEWZLSWWHKYXWVWWOIBZEXSIJZKZYQZSJMNXQWZCFFSJTKSBRZGARRHPIABSPGGIECYKLVVWQINTYPGQSODPEMSJGQRGFHQHOVVODSBURZAKXMOHAARRBRPVKMAGNYTRQPBYCZZNLUTCZMTKQIBGWNTALNBWRJOORACPEPEBBQXPAQIUUNVASRTTYFPGAQBNDSYSLERSAETWPCLXYXZKMSLYMNCUGJWPSNGEQORROXDBIHJAXHRUFNUMFFSOSTHZFBBHHQUZOWDGJCIBGOQZJFVALDBDJIYUSTOUPSVOXGTIDPILHHQUMODQRBOSGYTCVOLVDNETSSDWMWHTRQTWFITIATSZGDNDBNBTQJPSQOWYQJEOORCHPBKUGGQYQIAKNGDPQNPORUKMZAPAWMVPGRINFHXDWQRVGFXAQNWRSKPHAKOEQHJBAJSCSHOTIADWTZRLKCURDGWJHMBWMWZLRSUWOOAAKPAZBQZCCSWUPUGHXENQHZRJZMVLFTLTPQDDHXOWFQXTBOGRZOQTZCICDFHMRUANMUAYRXDTNKTVNCLYIEVWTLNJPPFKFTZORASEOWKGVHKRNKEDRNGPFCRCRJVESZIAVYDWFOOYASXISCFFBLTLMBLOHSCQYASOYHNKLTVRDIZCBSEJLOYRDXVKIAQKTZZKDCRIFLXNAJJIOFPINPUDSGQPZYIRZOBUHILJKZFYRUECXGHQUXKLUCXWMZILBCJVDNQATJMHJCDKAOEIJBKWFYOBXIQPRAKLVWWCEEXAKGVWVAVBEXXMNFXLOIKKUMXPUEUNQKFNQCZPVLANZYHEFLMJWUGBOBBHSJSMBANQTLCHZOOHEXABQBTAMGWJAFHZPCVYTUSXGFSYPFIKXGMJGABPYNDQXULWLUJSCTBIBQFONUBRVMUJZBYLEYEMLHFMTKKRZIXPMXNOVTYOQHXOHWUFIXXOPJFKZONUOYZAYLSLOLSJCATFYOIZFWEXQZFWVFRGYPYPGMQLYBDMDAKUAZOHAKRRBAGFIYXXOYLTIRIIKUOLZCLLPQGRYCFUNURHRYGJLKBOFFKBTVXAQQDNUWLDQWMFWAMOZTVSIFRYXQKKVPSKGBAWDZMPQIAWPCLYCTVNCZIYLOPYQOBLNHRVZRQZZLBKVNMYHCFZLCRJYXEHQGPNPRHNNKNCVEWHVLUMQZSRYOTA
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python