文章詳情頁
python - 不理解函數作用域
瀏覽:119日期: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 - 在靜態頁面上用load 引入的頁面文件問題?2. javascript - webpack打包后的bundlejs文件代碼不知道什么意思.3. Java游戲服務器開發和網站、app服務端的開發都差不多的嗎???實現的思路和方法4. android - RxJavar用什么操作符可以使數據每隔一段時間取出一個5. java后臺導出頁面到pdf6. css - 關于ul的布局7. css - 如何使用 vue transition 實現 ios 按鈕一樣的平滑切換效果8. java - oracle對漢字字段按照拼音排序的函數和sql語句是什么?9. javascript - vue組件通過eventBus通信時,報錯a.$on is not a function10. html - 哪些情況下float會失效?
排行榜
