簡體   English   中英

遞歸的“try except”塊中的變量減速 function

[英]Variable decleration in a 'try except' block of a recursive function

我想在 except 塊中聲明一個變量以在 try 塊中使用該變量,所有這些都在遞歸函數中。
像那樣:

def rec():
    try:
        print(l)
        return
    except NameError:
        l = 1
        rec()

它變成了一個無限循環,但為什么呢? 它應該嘗試打印 l,正確地跳轉到 Name-exception,在那里聲明變量,遞歸調用 function,現在應該能夠打印聲明的變量。 但它一直在 except 塊中跳躍? 有什么方法可以實現嗎?

變量 l 僅存在於 except 塊中。 如果你想這樣做,你可以添加以下行:

global l

這將確保它可以在以下遞歸調用中訪問。

因為l = 1從未在任何單獨的 function 調用中的print(l)之前執行過。 期望它起作用就像期望它起作用一樣:

a = 1
def test():
    print(a)

function 調用自身不會使遞歸調用可以訪問其中定義的任何變量,例如,無需將它們作為參數傳遞給遞歸調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM