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. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?2. javascript - JS 里面的 delete object.key 到底刪除了什么?3. mysql - 電商如何存儲(chǔ)營(yíng)業(yè)額數(shù)據(jù)4. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開當(dāng)前菜單5. 管理員信息修改時(shí)的密碼問題6. android - RxJava 中有根據(jù)條件執(zhí)行不同函數(shù)的操作符嗎?7. javascript - html5的data屬性怎么指定一個(gè)function函數(shù)呢?8. java如何生成token?9. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas10. html5 - 為什么使使用vue cli 腳手架,post-css 沒有自動(dòng)對(duì)css3屬性自動(dòng)添加瀏覽器前綴呢?
