python - 如何獲取嵌套函數中的值
問題描述
假設有這樣一段代碼:
def demo(): a = 1 b = 0 c = a / bdef main():try: demo()except Exception as e: print(e)main()
現在希望在異常時不對demo函數內的代碼做任何修改也可以獲取到demo中a和b的值。
問題解答
回答1:參考了這個問題,然后解決了。嵌套函數獲取調用函數
回答2:用全局變量 global 可以實現
a = b = 0def demo(): global a, b a = 1 b = 0 c = a / bdef main():try: demo()except Exception as e: print ’a: %d, b: %d’ % (a, b) print(e)main()回答3:
函數外加引用, 這是變量作用域的知識
a = Noneb = Nonedef demo(): global a, b a = 1 b = 0 c = a / bdef main(): try:demo() except Exception as e:print(e)main()print aprint b
或者把a,b放一個字典變量里, 這樣就不需要global了
g = {'a':0,'b':0}def demo(): g[’a’] = 1; g[’b’] = 0 c = g[’a’] / g[’b’]
相關文章:
1. mysql - 請問數據庫字段為年月日,傳進的參數為月,怎么查詢那個月所對應的數據2. node.js - win 下 npm install 遇到了如下錯誤 會導致 無法 run dev么?3. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?4. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?5. [python2]local variable referenced before assignment問題6. Python2中code.co_kwonlyargcount的等效寫法7. html - 移動端radio無法選中8. php - 微信開發驗證服務器有效性9. javascript - vue+iview upload傳參失敗 跨域問題后臺已經解決 仍然報403,這是怎么回事?。?/a>10. mysql - 如何在有自增id的情況下,讓其他某些字段能不重復插入
