我有一个函数需要执行两个代码块之一:
如果某个变量
check
为False,或者代码A失败,则需要执行代码B。代码 A 或 B 必须执行,而不是两者都执行。我写这个的方式是:
try:
if check:
raise TypedError('')
# code A
except TypedError:
# code B
我对此感到难过有两个原因:
check
为 True 并且代码 B 中发生错误,则从回溯看来,该错误是在处理另一个错误时发生的,这是不真实的并且可能会造成混乱。你认为有一种更Pythonic的方式来编写同一个程序吗?
@FrankYellin 的精彩且有用的评论让我意识到有一个我以前无法想到的更好的解决方案:
if check:
try:
# code A
except TypedError:
check = False
if not check:
# code B
我觉得这样更好,而且只多了一行。谢谢你接受我愚蠢的问题。