2012-01-26 21 views
0

我似乎無法找到說Python版本的Perl = || (= OR)

x = y or 1 

在Perl的蟒蛇方式:

$x = $y || 1; 

有一個很好的方式在Python做到這一點?

+4

什麼不適用'x = y或1'? –

+0

我的程序失敗了,它看起來像是這個問題,但事實並非如此。 x = y或1是正確的。多謝你們! – shaneburgess

回答

7

Python的or我相信你正在尋找的語義。見the documentation。意識到它返回輸入值很重要,而不是TrueFalse

>>> "" or 12 
12 

>>> 27 or 9 
27 

>> None or "default" 
'default' 

這應該意味着x = y or 1應該是你以後,xy如果y是非False,否則這將是1

1

下一個簡單,但不是很好:

x = y if y else 1 
4

x = y or 1是一樣的:

if y: 
    x = y 
else: 
    x = 1 

難道不是你想要做什麼?

4
y = 2 
x = y if y else 1 
# x == 2 

y = None 
x = y if y else 1 
# x == 1 
2

所有提及的,如果Y定義將工作方案(也可以是無)

如果Y是沒有定義Python會拋出一個異常,而Perl代碼將在非嚴格模式下工作。