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

Python:为If-Else条件语句添加别名?,python,if-statement,printing,Python,If Statement,Printing,假设我们有以下几点: my_condition = True print('AAA' if my_condition else 'BBB') 产出将是: AAA 相反,如果my_条件变为False: my_condition = False print('AAA' if my_condition else 'BBB') 产出将是: BBB 现在,假设我想在一系列不同的打印函数的末尾添加相同的,如果我的条件为'BBB' 有没有办法把那句话化名 因此,不是: my_condition = T

假设我们有以下几点:

my_condition = True
print('AAA' if my_condition else 'BBB')
产出将是:

AAA


相反,如果
my_条件
变为
False

my_condition = False
print('AAA' if my_condition else 'BBB')
产出将是:

BBB


现在,假设我想在一系列不同的打印函数的末尾添加相同的
,如果我的条件为'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语句命名为别名

编辑 我应该提到我在Python2.7上运行它,
不过,我非常欣赏3.X解决方案。

使用lambda表达式

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

如果
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

但我建议不要使用它,因为它对我来说非常不和谐。

似乎你想要一个函数,有很多方法可以得到你想要的结果

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

foo = lambda x: x if condition else "BBB"
print (foo("AAA"))
这是一个好主意

当然,您可以始终使用良好的老式功能:

def foo(x):
    return x if condition else "BBB"
还有另一个选择(这是我最喜欢的):

假设你有一个列表,上面有一大堆你想打印的单词,为什么写的比打印的多呢?你可以用

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


,因为2.X中的
print
是一个语句,而不是一个函数。

不完全是,不。但是您可以编写一个函数来执行此操作,然后调用它。是的,条件将始终相同。我试图在我的程序中实现一个调试功能,除非启用了调试,否则我无法显示某些打印功能。Ups!我没注意到你不想在同一个地方同时打印所有照片,所以列表压缩不适合你的需要,抱歉。好的,这真的很好。我试图实现
foo=lambda x:x if条件else“BBB”打印(foo(“AAA”))
但是,正如您所预测的,它在2.x中对我不起作用。是否会有一个2.X/3.X的组合解决方案?无论您使用的是什么版本,这段代码都应该可以工作,我指的是列表理解(抱歉,没有明确指定)您得到的错误是什么?无论如何,为了使它工作(在列表理解中,正如我所说,lambda表达式应该工作),您可以使用
from\uuuuu future\uuuuu import print\u函数
将打印作为函数,或者您可以简单地
导入sys
并使用
sys.stdout.write('hola')
是的,我已经尝试了所有这些。这对我来说根本不管用。显示“AAA”是可以的,但else条件在2.X中根本不起作用。我相信它可以在3.X上运行,但我的代码还不兼容3.X。
foo = ["hola","que","tal"];

[print(x if my_condition else "BBB") for x in foo]
foo = [("hola","pues"),("que","nada"),("tal","bien")]

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