2011-06-21 4 views

答えて

4

)オペレータ短絡を実証およびb)Pythonで、論理演算子を取ると非bool値を返すことができる、という事実:

string1 or string2 or string3 # is the same as 
(string1 or string2) or string3 
# string1 or string2 is '' or 'Trondheim', and as 
# '' is logically False, this results in 'Trondheim' 
# 'Trondheim' or string3 is short-circuited and never evaluated, 
# because a non-empty string is logically True 
1

の場合は、リスト内の最初のnull以外の文字列を検索するために、短絡的なブール評価を使用しています。文字列の場合、空の文字列''Falseに評価され、すべての他の文字列はTrue値とします。

セクション5.1および5.2 documentationからあなたがこれを理解するために知っておく必要があるすべてを教えてください。特に

:最初のものがFalseである場合、それは唯一の第二引数を評価するよう

x or y  if x is false, then y, else x 

これは短絡演算子は、です。

2

それは単にあなたの最初の非空の文字列 'ハイム' を返すと同じです:pythonのorオペレータは1 [のように定義することができます

if not string1: 
    string3 if not string2 else string2 
else: 
    string1 
6

non_null = (string1 or string2) or string3 

か]:

x or y : if x is false, then y, else x 

また上記の定義は、string2の値を評価することによってように、:、string1は、PythonがFalseとして変換し、空の文字列、(いくつかのプログラミング言語は、これを行う、他のものはない側ノード)です。それは、その後(result of 'string1 or string2') or string3を行う場合は、string2は空の文字列ではなく、そうFalseに一致しない、ので、それはstring2と評価されます。

[1] http://docs.python.org/release/2.5.2/lib/boolean.html

1

をそれだけnullでなく、non_null変数に渡した文字列をチェックします。 string1は空ですので、string2を使用できます。

関連する問題