我有些疑問,請大神指點一下
def?count(): ????fs?=?[] ??for?i?in?range(1,?4): ??????def?f(j): ????????def?g(): ??????????return?j*j ????????return?g???????? ????????fs.append(f(i))???????? ??????????print?fs???? ????return?fs f1,?f2,?f3?=?count() print?f1[0] print?f1(),?f2(),?f3()
問題1:fs是一個list啊? 返回的是一個list啊 為什么不能使用一個list變量接收,然后遍歷呢?(不是指本題,我是說如果這么做的話)
問題2:f1()代表調用了count()? 只不過換了個函數指向 我這么理解對嗎?
問題3:我print fs 為什么都是空,為什么沒有添加到fs中去呢?
求大神指點,菜鳥表示感謝!
2019-02-18
首先我想說明的是,count()返回的fs[]存儲的是g()在i為1,2,3時的函數名的地址
問題1:count()可以用list變量接收,可是遍歷結果一樣會是三個函數名的地址
問題2:f1()是調用了count(),也就是i為1的時候
問題3:應該是這里顯示的問題,添加到fs列表的內容是函數地址,在python2中打印不出來,不過在python3中打印出來是f1是<function count.<locals>.f.<locals>.g at 0x0000022A37A22268>,也就是存儲了函數的內存地址
2019-02-19
感謝,稍微明白些了