如果是else语句,则使用try除了块

时间:2019-09-10 16:31:43

标签: python python-3.x if-statement try-except

我有一个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语句中并使代码真正混乱?任何帮助表示赞赏!

3 个答案:

答案 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