我看着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