[ターン]およびまたはスキル

4.6。  そして、  及び  または  特殊文字

Python ,,  し、  または  あなたが同じことを期待するとして、ブール論理の計算を行います。しかし、彼らはブール値を返しませんが、実際の値の比較のいずれかを返します。

例4.15。  そして、  はじめに

>>> 'A' 'B' 'B' >>> ' 'B' '' >>> 'A' および'B' 及び'C' 'C'
1 使用  して  ブール値のコンテキストで正しい値に左の計算式から、とき。0「」[] 、() {} なし  ブール偽環境の、何かが真です。幸いなことに、ほとんどすべて。デフォルトでは、EnvironmentクラスのインスタンスBoolean trueのですが、クラスインスタンスの特定のクラス、このような計算方法がfalseで定義することができます。あなたはになります第5章クラスと特別な方法を学びました。すべてのブール環境が真である、その場合   最後の値を返します。この例では、  計算  「」  真である場合、  「B」  計算は、最終的に戻り、真である  「B」を
2 ブール値がfalseの環境であれば、  そして  最初の偽の値を返します。この例では、「」  最初の偽の値です。
3 すべての値が真であるので、  そして  、本当の最後の値を返す「C」を

例4.16。  または  導入

>>> 'A' または'B' 
' >>> ' または'B' 'B' >>> '' または[] または{} {} >>> DEF sidefx():... プリント"sidefxで()" ... リターン1 >>> '' 又はsidefx()''
1 使用する  か、  単に、左から右に真偽値の値を計算するとき   同じ。値がtrueで、場合  、すぐにその値を返します。本実施形態では、「A」は、  最初の真の値です。
2 または  微積分  「」  値が、その後、偽れる  「b」が  真である、その後に戻り  、B「」  。
3 すべての値が偽である、場合または  最後の偽の値を返します。または  結石  「」  値は、その後、偽である  []  を順次算出し、偽である  } {  偽であり、かつ戻り  {}  。
4 なお、  または  最初の真の値までブールコンテキスト式の計算で行われていたであろう、それは比較値の残りの部分を無視します。一部の値が副作用を持っている場合は、この機能は非常に重要です。ここでは、関数  sidefx  ので、呼び出されることはありませんが、  または  微積分  「」  trueで、すぐに戻って続いている  「」  アップ。

あなたがいる場合は  Cハッカーの言語に精通している必要があり  BOOL  ?  A  :  bの  場合の式、  ブール値が  trueの場合、式はevalutes  、そうでない場合は  、B基づいて  、Pythonの   と   仕事、あなたは同じことを達成することができます。

使用4.6.1  および-や  トリックを

 例4.17。  AND-OR  トリックの紹介
>>> A = "最初"
 >>> B = "第二" >>> 1 及びA 又はB1 '最初の' >>> 0 及びA 又はB2 「第2」 
1 この構文は次のようになります  C言語の  BOOL  ?  A  :  Bの  表現。左から右に計算する式全体が、最初に行う   計算式。1と「最初の」  evalutes  「最初の」、および  「最初の」又は「第2」  計算値  「最初の」
2 0「最初の」  evalutes  、次いで  0又は「第2」  evalutes  「第2」

しかし、この以来、  Python式ばかりブール論理演算ではない憲法の特定の言語、  および、または  トリックや  C言語の  BOOL  ?  A  :  Bの  非常に重要な差異文法。場合は   falseであなたが期待するように、式が機能しません。(私はこの問題にそれを投げた伝えることができますか?回以上?)

例4.18。  そして、または  無効スキルの機会

>>> A = ""
 >>> B = "第二" >>> 1 及びA 又はB 「第2」
1 以来   、空の文字列がある、で  Python環境中空Booleanストリング、偽と考えられている。1、「  計算がある  最後の  二「「」または」  微積分値  「第2」ああ!この値は、あなたが望むものではありません。

そして-や  スキル、つまり  BOOL  と  、A  または  Bの  とき式は、   値がブール値のコンテキストで偽である、としてではなく、  C言語式の  BOOL  ?   :  Bの  ような作業。

で  AND-OR  トリックの背後にある本当のトリックことを確実にするためである   値がfalseになることはありません。最も一般的な方法を作ることである   ことが  、[ A ]  、  B  になる  [ B ]は、値のリストの最初の要素を返し、なければならない   か、  bは 1です。

例4.19。安全性  および、または  トリック

>>> = A ""
 >>> B = ""第二 >>> (1 及び[A] または[B])[0] 「」
1 ので  、[ A ]  非空のリストがあり、それは決してfalseです。場合であっても   されて  0  または  「」  または他の偽の値、リスト  [ A ]  それは要素を持っているので、また事実です。

今までは、このトリックはそれの価値よりも多くのトラブルのように見えるかもしれません。結局のところ、使用して  いる場合  のステートメントは、同じことを達成することができ、なぜこのすべての大騒ぎを通過しますか?ああ、多くの場合、あなたがいることを知っているので、あなたは、2つの定数値の間で選択する必要があり   値は常に真であるので、あなたはこの単純な構文を使用して心配することはできません。より複雑な安全なフォームの場合は、そうする正当な理由があります。例えば、中に  Pythonでいくつかのケース  場合  のステートメントは、のように、許可されていない  ラムダ  関数。

おすすめ

転載: www.cnblogs.com/a-cloud---/p/11204077.html