Detaillierte Einführung in die tatsächliche Verwendung von und und oder in Python

零下一度
Freigeben: 2017-05-26 11:58:02
Original
7810 Leute haben es durchsucht

Spezielle Eigenschaften von and und or

In Python führen and und or boolesche Logikoperationen aus, geben jedoch stattdessen keinen booleschen Wert zurück einer der Werte, mit denen sie tatsächlich verglichen werden. Schauen wir uns ein Beispiel an.

>>> 'a' and 'b'        
'b'
>>> '' and 'b'         
''
>>> 'a' and 'b' and 'c'
'c'
Nach dem Login kopieren

Bei Verwendung von und wird der Wert des Ausdrucks von links nach rechts in einem booleschen Kontext ausgewertet. 0, '', [], (), {}, None sind in einem booleschen Kontext falsch; alles andere ist wahr. Na ja, fast alles. Standardmäßig werden Klasseninstanzen in einem booleschen Kontext als wahr ausgewertet. Sie können jedoch bestimmte Methoden in der Klasse definieren, die dazu führen, dass Klasseninstanzen als falsch ausgewertet werden. In Kapitel 5 erfahren Sie mehr über Klassen und diese speziellen Methoden. Wenn alle Werte im booleschen Kontext wahr sind, gibt und den letzten Wert zurück. In diesem Beispiel bewertet die Und-Kalküle „a“ als „wahr“, dann „b“ als „wahr“ und gibt schließlich „b“ zurück.
Wenn ein Wert im booleschen Kontext falsch ist, dann gibt und den ersten falschen Wert zurück. In diesem Beispiel ist '' der erste falsche Wert.
Alle Werte sind wahr, also und gibt den letzten wahren Wert „c“ zurück.

>>> 'a' or 'b'         
'a'
>>> '' or 'b'          
'b'
>>> '' or [] or {}     
{}
>>> def sidefx():
...     print "in sidefx()"
...     return 1
>>> 'a' or sidefx()    
'a'
Nach dem Login kopieren

Bei Verwendung von or werden Werte in einem booleschen Kontext von links nach rechts ausgewertet, genau wie und. Wenn ein Wert wahr ist, oder dieser Wert sofort zurückgegeben wird. In diesem Fall ist „a“ der erste Wahrheitswert.
oder wertet '' als falsch aus, wertet dann 'b' als wahr aus und gibt 'b' zurück.
Wenn alle Werte falsch sind oder der letzte falsche Wert zurückgegeben wird. oder wertet '' als falsch aus, wertet dann [] als falsch aus, wertet dann {} als falsch aus und gibt schließlich {} zurück.
Beachten Sie, dass oder in einem booleschen Kontext den Ausdruck auswertet, bis der erste wahre Wert gefunden wird, und dann die verbleibenden Vergleichswerte ignoriert. Diese Eigenschaft ist wichtig, wenn einige Werte Nebenwirkungen haben. Hier wird die -Funktion sidefx nie aufgerufen, da die or-Operation „a“ als wahr auswertet und daher sofort „a“ zurückgibt.

Wenn Sie ein C-Hacker sind, müssen Sie mit dem Ausdruck bool ? a : b vertraut sein. Wenn bool wahr ist, wird der Ausdruck zu a ausgewertet, andernfalls ist er b. Basierend auf der Art und Weise und/oder Arbeit in Python können Sie dasselbe erreichen.

Beispiel. Einführung in Und-Oder-Techniken

>>> a = "first"
>>> b = "second"
>>> 1 and a or b
'first'
>>> 0 and a or b
'second'
Nach dem Login kopieren

Diese Syntax ähnelt dem bool ? a : b-Ausdruck in der C-Sprache. Der gesamte Ausdruck wird von links nach rechts ausgewertet, sodass der and-Ausdruck zuerst ausgewertet wird. 1 und „erster“ werden zu „erster“ ausgewertet, dann wird „erster“ oder „zweiter“ zu „erster“ ausgewertet.
0 und „erster“ werden zu „Falsch“ ausgewertet, dann 0 oder „zweiter“ zu „zweiter“.

Da dieser Python-Ausdruck jedoch nur boolesche Logikoperationen ausführt und keine spezifische Komponente der Sprache ist, ist dies die Und-Oder-Technik und die Bool-A-:-B-Syntax in der C-Sprache ist sehr wichtig anders. Wenn a falsch ist, funktioniert der Ausdruck nicht wie erwartet. (Wissen Sie, dass mich dieses Problem mehr als einmal beunruhigt hat?)

Beispiel: Wenn die Und-Oder-Technik ungültig ist

>>> a = ""
>>>b = "second"
>>> 1 and a or b        
'second'
Nach dem Login kopieren

Weil a ein ist leeres LeerzeichenString, die leere Zeichenfolge wird im booleschen Kontext von Python als falsch betrachtet, 1 und '' werden zu '' ausgewertet, und schließlich wird '' oder 'zweite' zu 'zweite' ausgewertet. Oh! Dieser Wert entspricht nicht Ihren Wünschen.

Der Und-Oder-Trick, der bool- und a- oder b-Ausdruck, funktioniert nicht wie der C-Sprachausdruck bool a : b, wenn a in einem booleschen Kontext als falsch ausgewertet wird.

Der eigentliche Trick hinter dem Und-Oder-Trick besteht darin, sicherzustellen, dass der Wert von a niemals falsch ist. Die gebräuchlichste Methode besteht darin, a [a] und b [b] zu erstellen und dann das erste Element der Rückgabewertliste zu verwenden, das entweder a oder b sein sollte.

Beispiel: SicherVerwenden Sie den Und-Oder-Trick

>>> a = ""
>>> b = "second"
>>> (1 and [a] or [b])[0]
''
Nach dem Login kopieren

Da [a] eine nicht leere Liste ist, wird sie niemals falsch sein. Auch wenn a 0 oder '' oder ein anderer falscher Wert ist, ist Liste [a] wahr, weil sie ein Element enthält.

Mittlerweile scheint dieser Tipp mehr Probleme zu verursachen, als er wert ist. Schließlich kann das Gleiche auch mit einer if-Anweisung erreicht werden. Warum also die ganze Mühe auf sich nehmen? Nun, in vielen Fällen werden Sie zwischen zwei konstanten Werten wählen, und da Sie wissen, dass a immer als wahr ausgewertet wird, können Sie diese einfachere Syntax verwenden, ohne sich Sorgen machen zu müssen. Es gibt immer noch gute Gründe für den Einsatz ausgefeilterer Sicherheitsformen. Beispielsweise gibt es in der Python-Sprache einige Situationen, in denen if-Anweisungen nicht zulässig sind, beispielsweise in Lambda-Funktionen.

Hinweis : Die Aussagen hier werden von links nach rechts interpretiert. Wir können es so verstehen.
und-Anweisung:
0und* Es besteht keine Notwendigkeit zu berücksichtigen, ob * 0 oder 1 ist, das Ergebnis ist 0
1und* Sie müssen berücksichtigen, ob * 0 oder 1 ist, um das Ergebnis zu bestimmen.

1oder* Es besteht keine Notwendigkeit, Folgendes zu berücksichtigen *, das Ergebnis ist 1
0oder* Es ist notwendig, Folgendes zu berücksichtigen * um das Ergebnis zu bestimmen

【Verwandte Empfehlungen】

1. Python-Zusammenfassung von und, oder und-oder-Syntax

2. Analyse der Verwendung von und und oder in Python

3. Teilen und/oder in Python-Operationslogik-Beispiel-Tutorial

4.Zusammenfassung der logischen Operatoren von Python

Python: Beispiele für logische Beurteilung und Operatoren

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die tatsächliche Verwendung von und und oder in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!