>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'
これはこのpageのPythonチュートリアルから、私は2行目を理解していません。このコードは何をしていますか?
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'
これはこのpageのPythonチュートリアルから、私は2行目を理解していません。このコードは何をしていますか?
)オペレータ短絡を実証および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
を
の場合は、リスト内の最初のnull以外の文字列を検索するために、短絡的なブール評価を使用しています。文字列の場合、空の文字列''
はFalse
に評価され、すべての他の文字列はTrue
値とします。
セクション5.1および5.2 documentationからあなたがこれを理解するために知っておく必要があるすべてを教えてください。特に
:最初のものがFalseである場合、それは唯一の第二引数を評価するよう
x or y if x is false, then y, else x
これは短絡演算子は、です。
それは単にあなたの最初の非空の文字列 'ハイム' を返すと同じです:pythonのor
オペレータは1 [のように定義することができます
if not string1:
string3 if not string2 else string2
else:
string1
:
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
と評価されます。
をそれだけnullでなく、non_null変数に渡した文字列をチェックします。 string1は空ですので、string2を使用できます。