我试图简化以下代码(删除多余的打印),但找不到令人满意的方法:
def main():
if expression1:
print("1")
print("always_do_this")
return
if expression2:
print("2")
print("always_do_this")
return
# ... possibly more expressions and thus redundancy
print("always_do_this")
# do something else
我的第一个想法是try-(except-)else
组合,但是else
不会在try
-块中的返回上执行。你知道吗
def func():
if expression1:
print("1")
return True
if expression2:
print("2")
return True
return False
def main():
result = func()
print("always_do_this")
if result:
return
# do something else
def main():
error = False
try:
if expression1:
print("1")
return
if expression2:
print("2")
return
except:
error = True
raise
finally:
if not error:
print("always_do_this")
# do something else
在python中肯定有更好的方法来实现这一点吗?你知道吗
附言:如果您有任何关于更好标题的想法,我们将不胜感激……
PPS:我不是直接问(主观的)代码风格,而是想知道是否有一种我没有考虑的方法来编写这个代码(例如,一种语言结构/模式,它也使代码更简洁/更清晰;显然还有很多更糟糕的方法)。你知道吗
如果您总是想关闭一个文件,我会使用
with
语句。在更一般的情况下,您可以创建自己的上下文管理器来完全控制最后运行的内容。你知道吗示例代码:
我添加了一个多余的
else
,以便在出现错误时打印有关异常的内容,但为了更准确地再现原始代码,请不要使用它。你知道吗这段代码并不比您使用的
print
语句的代码短,但是对于更复杂的“closer”代码,我喜欢这种方法。你知道吗也可以使用
contextlib
库以这种方式定义上下文管理器:参考文献:
检查流是否没有进入前两个
if
块,方法是检查前两个if
语句的对立面是否由and
连接,这样,只有前两个if语句失败时,才能执行“do something other”。在if语句的末尾而不是中间返回。你知道吗相关问题 更多 >
编程相关推荐