2017-06-01 86 views
1

這裏是例子:是否可以使用條件表達式進行多個賦值?

age = 10 
reject = False 

if age < 10: 
    st = 'Kid' 
    reject = True 

else: 
    st='Adult' 
    reject = False 

這可能嗎?類似於:

statement1:statement2 if age < 10 else statement3:statment4 

我仍然在理解Python中的三元運算符時遇到問題。

+0

您請求的語法是不可能的。條件表達式語法是'true-expression if condition else false-expression'。 –

+0

@TerryJanReed你好,你實際上可以用表達式來綁定名字。例如,'globals().__ setitem __('st','Kid')'。 – wim

+0

只需使用if-else語句。沒有很好的理由試圖將你的代碼塞進單行,特別是如果它需要奇怪的單一用法的語言結構並不意味着實現這一點。 –

回答

1

你可以做這樣的:

st, reject = ('Kid', True) if age < 10 else ('Adult', False) 
+0

除了st,拒絕=(無,真)如果年齡<20 else ',假)我想不出任何我頭頂的東西 – rammelmueller

5

賦值語句支持multiple targets

>>> age = 10 
>>> st, reject = ('Kid', True) if age < 10 else ('Adult', False) 
>>> st, reject 
('Adult', False) 
+1

技術上可行,但醜陋。只要使用if語句並停止嘗試如此幻想。 – wim

0

您可以使用:

st, reject = ('Kid', True) if age < 10 else ('Adult', False) 

當你使用:

var1, var2 = 1, 2 

你正在做的一樣:

var1 = 1 
var2 = 2 

而當你使用:

var1 = 1 if x == y else 2 

你正在做的一樣:

if x == y: 
    var1 = 1 
else: 
    var1 = 2 

如果你想與這個定義你必須用變量構成一個元組(),它們將被解壓縮。

相關問題