我有一个try/except
代码块,我想使用它进行修改,还有一个if/else
语句,它将执行部分代码并跳过其他代码。
这是我现在拥有的逻辑存根:
if arg1 == 'None':
do something
else:
do something else
try:
execute main code
except:
update failed status
execute_seperate_function(arg)
我想做的是,如果代码进入第一个if statement
,然后按原样运行try/except
和最后一个函数。但是,如果它进入else statement
,我想按原样运行try
代码,但是跳过执行except
和最后一个函数。
是否有一种很好的方法来代替将所有内容放入if/else
语句中并使代码真正混乱?任何帮助表示赞赏!
答案 0 :(得分:1)
可以使其功能类似于以下带有标志参数的函数,该参数确定是否
def task(flag):
if (flag == True):
try:
execute main code
except:
update failed status
execute_seperate_function(arg)
else:
execute main code
if arg1 == 'None':
task(True)
else:
task(False)
那真的很整洁吗?取决于我猜do something
。
答案 1 :(得分:1)
在某种程度上,这可以通过在功能之间划分逻辑来实现:
def do_something():
try:
execute_main_code()
except Exception:
update_failed_status()
execute_separate_function(arg)
def do_something_else():
execute_main_code()
def execute_main_code():
pass
def update_failed_status():
pass
def execute_separate_function(arg):
pass
if arg1 == "None":
do_something()
else:
do_something_else()
答案 2 :(得分:1)
首先,将您认为是“执行主代码”的代码放入函数中,我们可以随意调用“ main”:
def main:
execute main code
if arg1 == 'None':
try:
main() # execute main code
except Exception:
update failed status
execute_seperate_function(arg) # called whether there was an exception or not
else:
main() # just exec main code without try block