python - 如何獲取嵌套函數(shù)中的值
問題描述
假設(shè)有這樣一段代碼:
def demo(): a = 1 b = 0 c = a / bdef main():try: demo()except Exception as e: print(e)main()
現(xiàn)在希望在異常時(shí)不對(duì)demo函數(shù)內(nèi)的代碼做任何修改也可以獲取到demo中a和b的值。
問題解答
回答1:參考了這個(gè)問題,然后解決了。嵌套函數(shù)獲取調(diào)用函數(shù)
回答2:用全局變量 global 可以實(shí)現(xiàn)
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:
函數(shù)外加引用, 這是變量作用域的知識(shí)
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ǔ),b放一個(gè)字典變量里, 這樣就不需要global了
g = {'a':0,'b':0}def demo(): g[’a’] = 1; g[’b’] = 0 c = g[’a’] / g[’b’]
相關(guān)文章:
1. javascript - 關(guān)于apply()與call()的問題2. java - 在用戶不登錄的情況下,用戶如何添加保存到購(gòu)物車?3. javascript - nginx反向代理靜態(tài)資源403錯(cuò)誤?4. java - spring boot 如何打包成asp.net core 那種獨(dú)立應(yīng)用?5. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?6. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入7. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?8. 推薦好用mysql管理工具?for mac和pc9. Mysql 組合索引最左原則的疑惑10. javascript - 如何將函數(shù)計(jì)算出的內(nèi)容傳遞為變量
