亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于我個人的理解

def count():

? ? fs = []

? ? for i in range(1, 4):

? ? ? ? def f():

? ? ? ? ? ? ?return i*i

? ? ? ? fs.append(f)

? ? return fs


f1, f2, f3 = count()


print (f1(),f2(),f3())

第一步:執行代碼“f1, f2, f3 = count()”賦值號的右邊,調用count()函數,開始執行count()函數的內部命令

第二步:創建一個局部變量fs

第三步:開始執行for循環遍歷列表[1,2,3],i 賦值1,然后執行?fs.append(f) 代碼,得到[f],注意這時候并不需要執行函數f(),因為沒有調用

第四步:繼續執行for循環遍歷列表[1,2,3],i 賦值2,然后執行?fs.append(f) 代碼,得到[f,f],注意這時候并不需要執行函數f(),因為沒有調用

第五步:繼續執行for循環遍歷列表[1,2,3],i 賦值3,然后執行?fs.append(f) 代碼,得到[f,f,f],注意這時候并不需要執行函數f(),因為沒有調用

第六步:執行代碼“f1, f2, f3 = count()”賦值號的左邊,將fs(即[f,f,f])賦值給f1,f2,f3,使用到了高級序列賦值語句模式

第七步:執行 print (f1(),f2(),f3()) 代碼

第八步:調用函數f(),執行return i*i,此時的i的地址值指向的是外層函數中i的地址,i的值應為for之前的for循環重新賦值為3,所以return 3*3

正在回答

7 回答

為什么,count要先算自己內部,再算左邊引用的


0 回復 有任何疑惑可以回復我~

可以,可以,有點懵懂了


0 回復 有任何疑惑可以回復我~

恍然大悟

0 回復 有任何疑惑可以回復我~

太棒了,感謝分享,終于看到一個讓我明白的答案了

0 回復 有任何疑惑可以回復我~

第三、四、五步為什么f()沒有執行

0 回復 有任何疑惑可以回復我~

???


0 回復 有任何疑惑可以回復我~

??很棒呀

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

關于我個人的理解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號