Python 如何避免if条件的重复代码块?

Python 如何避免if条件的重复代码块?,python,Python,我用python编写了一些代码,基于一个特定的参数,我编写了如下代码。我想避免重复相同的代码块,我认为这既不明智也不美观 If arg is x: Do_1(x) Do_2 Do_3 ... else: Do_1(arg) Do_2 Do_3 ... 替代品 编辑:对不起,问题不明确,实际代码是: 对于范围(0,21)内的k: iteration\u目录=“%s/%s\u round\u%s%”(os.getcwd(),结构名称,k) 如果不存在os.path.exists(“%s/%s\u

我用python编写了一些代码,基于一个特定的参数,我编写了如下代码。我想避免重复相同的代码块,我认为这既不明智也不美观

If arg is x:
Do_1(x)
Do_2
Do_3
...
else:
Do_1(arg)
Do_2
Do_3
...
替代品

编辑:对不起,问题不明确,实际代码是:

对于范围(0,21)内的k:

iteration\u目录=“%s/%s\u round\u%s%”(os.getcwd(),结构名称,k)
如果不存在os.path.exists(“%s/%s\u round\u%s%”(os.getcwd(),结构名称,k)):
os.makedirs(“%s/%s\u round\u%s%”(os.getcwd(),结构名称,k))
如果start_model=='null':
如果os.path.isfile(“%s/%s.1.silent%”(迭代目录,结构名称))==False:
并行(n_jobs=num_cores)(延迟(片段搜索_nomodel)(迭代目录,rosetta路径,fasta,片段文件,结构名称,映射文件,i)用于剩余部分中的i)
如果os.path.isfile(“%s/scores1%”(迭代目录))==False:
片段评分(rosetta路径、迭代目录、结构名称)
如果os.path.isfile(“%s/assembled.1_0001.silent%”(迭代目录))==False:
并行(n_jobs=num_cores)(延迟(片段装配)(rosetta_路径、迭代_目录、结构_名称,i)用于剩余部分中的i)
共识分配(rosetta路径、迭代目录、结构名称、k)
start_model='%s/%s_round_u%s.pdb%%(os.getcwd(),结构名称,k)
print('s轮#%s的时间为:'%k,datetime.now()-startTime)
其他:
覆盖率=车型覆盖率(启动车型,fasta)
如果覆盖率似乎


无论您的if子句如何,都将被执行,因为无论arg值如何,您都将其传递给Do_1()方法。

尽管两种if/else情况是等效的,但这似乎是您所追求的:

if arg is x:
    Do_1(x)
else:
    Do_1(arg)
Do_2
Do_3

或者,您可以将Do_1的参数值设置为有条件的:

Do_1(x if arg is x else arg)
Do_2()
Do_3()

在Python中,缩进是有效语法的关键部分。请修正缩进,使您的意图清晰。Do_2和Do_3只需在
if else
块和un意料之外之后执行,以便始终执行它们。如果与
arg
相同,则只传递
x
,因此不需要
if
,只要始终通过
arg
。请查看实际代码以了解我的意思。我很抱歉对这个问题含糊其辞。
if arg is x:
    Do_1(x)
else:
    Do_1(arg)
Do_2
Do_3
Do_1(x if arg is x else arg)
Do_2()
Do_3()