文章詳情頁
python - 不理解函數作用域
瀏覽:110日期:2022-08-10 13:34:39
問題描述
def f(p, k): def g():print(k) if k == 0:f(g, 1) else:p()f(None, 0)
我覺得在f(None, 0)執行后,執行到f(g, 1)后k應該是1,但為什么執行還是0.
問題解答
回答1:這應該屬于閉包,我們可以把這段函數改一下
def f(k): def g():print(k) return ga = 1x = f(a)a = 2x()# 打印出# 1
這樣會不會更好理解一些呢可以看看這篇博客,他在底層說明了閉包的原理Python閉包詳解
相關文章:
1. javascript - axios請求回來的數據組件無法進行綁定渲染2. javascript - avalon使用:duplex設置select默認option的bug3. python - pandas dataframe如何對某列的空數據位置進行update?update的函數是自定義的,參數是同一行的另外兩列數據4. css3 - 純css實現點擊特效5. javascript - jQuery post()方法,里面的請求串可以轉換為GBK編碼么?可以的話怎樣轉換?6. html5 - 請問現在主流的前端自動化構建工具是哪個?7. java中返回一個對象,和輸出對像的值,意義在哪兒8. 安全性測試 - nodejs中如何防mySQL注入9. javascript - 關于apply()與call()的問題10. javascript - 有適合開發手機端Html5網頁小游戲的前端框架嗎?
排行榜
