我看着this list of python quirks,被逗樂了,這個返回False
:嘗試,最後:獲取當前返回值
def t():
try:
return True
finally:
return False
看到這,我看到它提出的理由答案here和here後,就是這樣子句總是會被執行,沒有例外。
我的問題是,在那裏保存的上return
值:
def t():
try:
return True
finally:
...
爲什麼沒有這個回報None
而是返回原來的True
?
是否有可能通過編程方式訪問將返回值的?
def t():
try:
return True
finally:
...
# if returning != None: return False
我想知道是否有可能做到這一點,而無需使用一個變量,例如:
def t():
retval = None
try:
retval = "Set"
finally:
if retval != None:
return retval
else:
return "Not Set"
和
def t():
retval = None
try:
...
finally:
if retval != None:
return retval
else:
return "Not Set"
回報'Set'
和'Not Set'
分別。
很明顯,它存儲在_somewhere_中,所以它可以在'finally:'子句之後使用(假設不包含'return'語句),但這是一個實現細節。 – martineau