文章詳情頁
python - 不理解函數作用域
瀏覽:126日期: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. 淺談vue生命周期共有幾個階段?分別是什么?2. macos - mac下docker如何設置代理3. java - Spring使用@Autowired失效但是getBean()可以執行成功4. css3 - flex box舊版可以實現新版中的wrap換行嗎?5. java - hibernate正向工程生成一對多關系模型無報錯,但是只生成了一張表6. Java EE 6:JSF與Servlet + JSP我應該學習JSF嗎?7. javascript - js正則匹配小括號中的內容8. javascript - webpack 怎么在壓縮時候刪除換行9. index.php錯誤,求指點10. 微信公眾號在線生成二維碼帶參數怎么搞?
排行榜
