假设我们有以下内容:
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解决方案。
答案 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"))
当然,你可以随时使用老式的功能:
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
但我建议反对它,因为它对我来说看起来非常不合情理。