2012-01-26 11 views
0

は、私はPerlでPerlのPythonバージョン= || (= OR)

x = y or 1 

を言うのPythonの方法を見つけるように見えることはできません。

$x = $y || 1; 

はPythonでこれを行うための良い方法はありますか?

+4

'x = y or 1'ではうまくいかないのですか? –

+0

私のプログラムは失敗していて、それが問題だったように見えましたが、そうではありませんでした。 x = yまたは1が正しい。みんなありがとう! – shaneburgess

答えて

7

Pythonのorは、私があなたが探しているセマンティクスであると信じています。 the documentationを参照してください。 TrueまたはFalseではなく、入力値が返されることを認識することが重要です。

>>> "" or 12 
12 

>>> 27 or 9 
27 

>> None or "default" 
'default' 

これはx = y or 1はあなたが後にしている何でなければならないことを意味する必要があり、xyは他に、False非であれば、それは1なりますyになります。 Perlコードが非厳密モードで動作する一方、Yが定義されている場合に動作します言及

1

単純なものではなく、その素敵な:それはあなたが何をしようとして

if y: 
    x = y 
else: 
    x = 1 

されていません。

x = y if y else 1 
4

x = y or 1は同じですか?

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

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

全ての溶液は、Yは、Pythonは例外をスローします定義されていない場合

(それなしになることはできません)。