[英]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.