Es wäre klug, wenn Sie etwas wie Boolesches und "A" oder "B" schreiben könnten [Python] [Aber]

Dies ist ein Memorandum, weil ich es zum ersten Mal gesehen habe, als ich den Tutorial-Code studiert habe (ich habe Click studiert).

Bedingte Verzweigung mit dem Booleschen Operator

Da der Boolesche Operator in Python den Wert des Vergleichs und nicht den Booleschen Wert zurückgibt,

>>> def test(flag=True):
...     print 'flag: %s' % (flag and 'on' or 'off')
... 

Wenn du es machst

>>> test(True)
flag: on
>>> test(False)
flag: off

Es sieht aus wie. Beachten Sie, dass und und oder hier Boolesche Operatoren sind, keine Vergleichsoperatoren.

Wie Sie im Abschnitt Boolesche Operatoren der Python-Bibliotheksreferenz sehen können, sind die Operatoren und,` oder "und" nicht "werden in aufsteigender Reihenfolge der Priorität ausgewertet, wie in der folgenden Tabelle gezeigt.

True, wenn
Arithmetik Ergebnis
x oder y y, wenn x falsch ist, x andernfalls
x und y x, wenn x falsch ist, andernfalls y
not x x false ist, andernfalls False

Daher wurden nicht leere Zeichenfolgen immer als "True" bewertet

Wenn das Flag "True" ist: (Weil der linke Begriff "True" ist) -> 'on' or 'off' (Weil die Zeichenfolge "wahr" ist) -> 'on'

Wenn das Flag "False" ist: (Weil der linke Begriff "Falsch" ist) -> False or 'off' (Weil der linke Begriff "Falsch" ist) -> 'off'

Es war.

Es war erfrischend zu wissen, was los war. Es sieht erfrischend aus und sieht vielleicht schick aus.

Aber ...

Anders ist es jedoch, wenn ich gefragt werde, ob ich in Zukunft so schreiben werde. Ich würde das ehrlich schreiben.

>>> def test(flag=True):
...    print 'flag: %s' % ('on' if flag else 'off')

Übrigens ist dies keine inklusive Notation, es scheint ein ternärer Operator zu sein, der ab Version 2.5 implementiert wurde, aber es sieht immer noch wie Python aus, also ist dies besser.

Außerdem gibt es im ersten Beispiel eine Einschränkung, dass der Teil der Zeichenkette etwas enthalten muss, das jedes Mal "Wahr" wird. In einigen Fällen kann es ein schwerwiegender Fehler sein, die Auswertung der zugewiesenen Elemente einzuschränken. Ich denke, es ist sicher, mit dem ternären Operator zu schreiben.

Referenz

Recommended Posts

Es wäre klug, wenn Sie etwas wie Boolesches und "A" oder "B" schreiben könnten [Python] [Aber]
[Python] gibt A [oder / und] B zurück
Schreiben wir ein Python-Programm und führen es aus
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Python a + = b und a = a + b sind unterschiedlich
・ <Slack> Schreiben Sie eine Funktion, um Slack zu benachrichtigen, damit sie jederzeit in Anführungszeichen gesetzt werden kann (Python).
[Einführung in Python] Verwendung des Booleschen Operators (und ・ oder ・ nicht)
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
[Python] Erstellen Sie einen Linebot, um den Namen und das Alter auf das Bild zu schreiben
Verbinde viel Python oder und und
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
Ich dachte, es wäre langsam, die for-Anweisung in NumPy zu verwenden, aber das war nicht der Fall.
Atcoder-Anfängerwettbewerb A, B Zusammenfassung der Eingabe, die tendenziell ein Problem für Python darstellt
Erweitertes Lernen 35 Python Lokale Entwicklung, fügen Sie einen Link zu myModule hinzu und importieren Sie ihn.
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
Installieren Sie die Python-Bibliothek, wenn Sie kein Sudoer sind (oder wenn Sie nicht möchten, dass neue Benutzer Sudoer sind, es Ihnen aber nichts ausmacht, die Python-Bibliothek einzuschließen).
Möchten Sie einen Twitter-Lebenslauf erstellen?
Machen Sie einen Chat-Bot und üben Sie, beliebt zu sein.
Warum muss Python einen Doppelpunkt schreiben?
Python-Memo- "wenn nicht A und B" war "wenn (nicht A) und B"
[Go] So schreiben oder rufen Sie eine Funktion auf
Ich möchte mit Python in eine Datei schreiben
Fileinput, ein Modul, das das Schreiben von Perl-ähnlichen Filterprogrammen in Python erleichtert
Erstellt eine Python-Bibliothek, um komplexe Einschlüsse zu schreiben und auf einfach zu lesende Weise zu reduzieren
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Als man den Unterschied zwischen dem verdammt großen Rashomon betrachtete, stellte sich heraus, dass es sich um eine unordentlich verdammt große Literatur handelte, wie der Tod eines Elternteils.
Ich mag es nicht, mit der Veröffentlichung von Pokemon Go frustriert zu sein, deshalb habe ich ein Skript erstellt, um die Veröffentlichung zu erkennen und zu twittern
[Python] Der Boolesche Operator (oder / und) gibt keinen Booleschen Wert zurück
Python, das ich Anfängern in der Programmierung empfehlen möchte
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
Es ist nicht einfach, Python zu schreiben, es ist einfach, numpy und scipy zu schreiben
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Ich habe python3.4 in .envrc mit direnv geschrieben und es zugelassen, aber ich habe einen Syntaxfehler erhalten
Eine Geschichte, die es einfach macht, den Wohnbereich mit Elasticsearch und Python abzuschätzen
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
[Python] Was ist ein Tupel? Erklärt, wie man es benutzt und wie man es benutzt, ohne zu tippen.
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern
Es kann ein Problem sein, Japanisch für Ordnernamen und Notizbuchnamen in Databricks zu verwenden
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können