課程
/后端開發
/Python
/python進階
為什么count()返回函數時,i的值全變成了3
2020-04-18
源自:python進階 2-9
正在回答
貌似是你函數外面調用了,其實代碼執行順序已經在for循環之后了,而for循環完了最后的結果就是i=3,因此是3*3
很好理解啊,for循環執行了完了,i就是成的range(1,4)生成的list[1,2,3]的最后一個值,猶如函數f1,f2,f3是for循環結束的時候你才調用的,所以就變成3*3了,如果你for循環一次就直接返回就1*1了,如:
def count():
? ? fs = []
? ? for i in range(1,4):
? ? ? ? def f():
? ? ? ? ? ? return i*i
? ? ? ? fs.append(f)
? ? ? ? break
? ? return fs
f1 = count()
print f1[0]()
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-04-25
貌似是你函數外面調用了,其實代碼執行順序已經在for循環之后了,而for循環完了最后的結果就是i=3,因此是3*3
2020-04-22
很好理解啊,for循環執行了完了,i就是成的range(1,4)生成的list[1,2,3]的最后一個值,猶如函數f1,f2,f3是for循環結束的時候你才調用的,所以就變成3*3了,如果你for循環一次就直接返回就1*1了,如:
def count():
? ? fs = []
? ? for i in range(1,4):
? ? ? ? def f():
? ? ? ? ? ? return i*i
? ? ? ? fs.append(f)
? ? ? ? break
? ? return fs
f1 = count()
print f1[0]()