簡體   English   中英

Python:別名If-Else條件語句?

[英]Python: Aliasing an If-Else conditional statement?

可以說我們有以下內容:

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解決方案。

使用lambda表達式

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

看起來你想要一個函數,有很多方法可以得到你想要的結果。

這個與你嘗試過的非常相似:

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

這是一個lambda表達式

當然,你可以隨時使用良好的老式功能:

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

你有另一個選擇(這將是我最喜歡的):

假設您有一個列表,其中包含您要打印的那一堆字,為什么寫入比許多打印? 你可以使用列表推導

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]

請注意,這在Python 2.X中不起作用 ,因為2.X中的print是一個語句而不是一個函數。

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

但我會反對它,因為它看起來非常不合理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM