[英]Variable decleration in a 'try except' block of a recursive 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.