Python:别名If-Else条件语句?

时间:2014-02-19 07:46:18

标签: python if-statement printing

假设我们有以下内容:

my_condition = True
print('AAA' if my_condition else 'BBB')

输出结果为:

  

AAA


相反,如果my_condition成为False

my_condition = False
print('AAA' if my_condition else 'BBB')

输出结果为:

  

BBB


现在,假设我想在一堆不同的打印功能结束时放置相同的if my_condition else 'BBB'

有没有办法为该声明添加别名?

所以而不是:

my_condition = True
print('AAA' if my_condition else 'BBB')

我想要这样的东西:

myStatement = if my_condition else 'BBB'    

my_condition = True
print('AAA' myStatement)

除了,正如我已经发现的那样,这不起作用。 是否可以为If-Else语句添加别名?

修改 我应该提到我在Python 2.7上运行它, 但我很欣赏3.X解决方案。

3 个答案:

答案 0 :(得分:5)

使用lambda表达式

y = lambda x: x if my_condition else 'BBB'
print(y('AAA'))

答案 1 :(得分:2)

似乎你想要一个功能,有很多方法可以获得你想要的结果。

这个与你尝试过的非常相似:

foo = lambda x: x if condition else "BBB"
print (foo("AAA"))

这是lambda expression

当然,你可以随时使用老式的功能:

def foo(x):
    return x if condition else "BBB"

你有另一种选择(这将是我的最爱):

假设您有一个列表,其中包含您想要打印的那一堆字,为什么写入比许多打印?您可以使用list comprehensions

foo = ["hola","que","tal"];

[print(x if my_condition else "BBB") for x in foo]

此外,如果您不希望“BBB”始终是“其他”选项:

foo = [("hola","pues"),("que","nada"),("tal","bien")]

[print(x if my_condition else y) for (x,y) in foo]

Note this won't work in Python 2.X,因为2.X中的print是一个陈述而不是一个函数。

答案 2 :(得分:1)

如果my_condition始终是实际的bool,那么可以执行类似

的操作
>>> base_case = ["BBB"]
>>> my_condition = True
>>> print((base_case + ["AAA"])[my_condition])
AAA
>>> my_condition = False
>>> print((base_case + ["AAA"])[my_condition])
BBB

但我建议反对它,因为它对我来说看起来非常不合情理。