不理解為什么輸出是9,9,9呀?
def?count(): ????fs?=?[] ????for?i?in?range(1,?4): ????????def?g(): ????????????a=i*i ????????????return?a ????????fs.append(g) ????return?fs f1,?f2,?f3?=?count() print(f1(),?f2(),?f3())
請大神幫忙解釋一下
def?count(): ????fs?=?[] ????for?i?in?range(1,?4): ????????def?g(): ????????????a=i*i ????????????return?a ????????fs.append(g) ????return?fs f1,?f2,?f3?=?count() print(f1(),?f2(),?f3())
請大神幫忙解釋一下
2020-03-02
舉報
2020-03-11
我的理解是,函數f1實際指向函數g,而函數g中變量 i 并沒有在函數g內被定義,根據變量的作用域,變量i逐級向外查找,在函數count中找到了變量i,此時函數count中的變量i=3,所以函數g返回的結果為 9
2020-03-03
調用 f 時,i 是外部傳入的變量,第4行的 i 和第8行的 i 不是一層意思
相當于如下代碼,就好解釋了: