伊谢尔伦2017-04-17 15:39:11
這個是python的多指返回,count()函數回傳的是一個函數的列表,列表的值有三個,分別是f(1), f(2), f(3),賦值給了對應的f1,f2,f3,然後print的時候執行了函數,得到的是1,4,9
阿神2017-04-17 15:39:11
count()函數傳回fs這個列表,這個列表本身包含三個item。
f1, f2, f3 = count()
表示對列表解包。等價於
f1, f2, f3 = [1, 2, 3]
即 ,f1 = 1
, f2 = 2
, f3 = 3
原文的items是一些閉包函數。
ringa_lee2017-04-17 15:39:11
@sorashiro
額,我也是新手一枚,看到這段程式碼,我也有一句看不懂的地方,求問:
r = f(i) 這句程式碼,為什麼沒有執行f(j)函數呢?
我跟著程式碼腦裡走了一遍得到的答案是print:1,16,81
原因是我認為r = f(i)這句程式碼執行了f(j)函數,我在電腦裡運行了一遍發現自己是錯的,就不明白這裡這句話了:為什麼r = f(i)沒有執行f(j)函數呢?
大家讲道理2017-04-17 15:39:11
先回答f1,f2,f3=count()是什麼意思。因為count()函數回傳的是一個列表,python允許你將列表賦給多個變量,只要列表長度跟變數數相等。
其次,來講為什麼是1,4,9。這與函數的閉包有關,簡單的講是內部函數有記憶功能,它記住外部函數給它的參數。
所以f1,f2,f3接收清單後並沒有馬上執行,等到f1(),f2(),f3()被呼叫後,它們都同時會去執行j*j。