文章詳情頁
python - 不理解函數作用域
瀏覽:107日期: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. MySQL中無法修改字段名的疑問2. angular.js - angularjs的自定義過濾器如何給文字加顏色?3. angular.js - angular內容過長展開收起效果4. javascript - 如何讓移動端網頁的輸入框固定在底部?5. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應6. 大家好,請問在python腳本中怎么用virtualenv激活指定的環境?7. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請求)8. python的前景到底有大?如果不考慮數據挖掘,機器學習這塊?9. android - QQ物聯,視頻通話10. javascript - 微信小程序限制加載個數
排行榜
