Python-如何根据条件更改指令的顺序



我有一个关于Python代码的问题。有没有办法做到以下几点:

if conditon:
A(**paramsA)
B(**paramsB)
else:
B(**paramsB)
A(**paramsA)

不重复A((和B((使其更干净?

谢谢!

鉴于您的代码非常好,我们在理解方面做得再好不过了。尽管如此,我们仍然可以获得一些风格点,并在使用以下功能时制造一些敌人:

f1, f2 = [A, B][::(-1)**condition]
f1()
f2()

处理不同的参数也可以通过小的调整来方便

(f1, p1), (f2, p2) = [(A, paramA), (B, paramB)][::(-1)**condition]
f1(**p1)
f2(**p2)

示例(假设'foo''bar'是参数,12是函数(:

>>> [(1, 'foo'), (2, 'bar')][::(-1)**False]
[(1, 'foo'), (2, 'bar')]
>>> [(1, 'foo'), (2, 'bar')][::(-1)**True]
[(2, 'bar'), (1, 'foo')]

当然,您不希望生产代码有这样的东西。


请注意,按照目前的情况,如果condition的求值结果为True,则首先执行B。如果希望相反,请将(-1)**(condition)更改为2*(condition)-1condition前面放一个not

在函数中换行A和B,然后可以执行:

if condition:
first, second = A, B
else:
first, second = B, A
first()
second()

我会这样做:

flag = True

def myFuncA( a, b ):
return a * b
def myFuncB( a, b ):
return a -b

# define the order of calls based on flag
if flag:
functionSequence = [myFuncA, myFuncB]
else:
functionSequence = [myFuncB, myFuncA]
# call function in the given order
for curFunc in functionSequence:
print( curFunc(3,4))

更改测试的Flag值,看看它是否适用于您。

我在这里看到的最大好处是,代码解释了它的作用。它首先根据条件定义调用的顺序,然后按照给定的顺序执行这些调用。它也很容易扩展。

最新更新