首頁  >  問答  >  主體

python - 如何取得巢狀函數中的值

假設有這樣一段程式碼:

def demo():
    a = 1
    b = 0
    c = a / b

def main():
        try:
            demo()
        except Exception as e:
            print(e)
main()

現在希望在異常時不對demo函數內的程式碼做任何修改也可以獲得demo中a和b的值。

PHP中文网PHP中文网2712 天前741

全部回覆(3)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-18 10:57:41

    參考了這個問題,然後解決了。
    巢狀函數取得呼叫函數

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-18 10:57:41

    用全域變數 global 可以實現

    a = b = 0
    def demo():
        global a, b
        a = 1
        b = 0
        c = a / b
    
    def main():
            try:
                demo()
            except Exception as e:
                print 'a: %d, b: %d' % (a, b)
                print(e)
    main()

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-18 10:57:41

    函數外加引用, 這是變數作用域的知識

    a = None
    b = None
    def demo():
        global a, b
        a = 1
        b = 0
        c = a / b
    
    def main():
        try:
            demo()
        except Exception as e:
            print(e)
    main()
    
    print a
    print b

    或把a,b放一個字典變數裡, 這樣就不需要global了

    g = {"a":0,"b":0}
    def demo():
        g['a'] = 1;
        g['b'] = 0
        c = g['a'] / g['b']

    回覆
    0
  • 取消回覆