Ich habe CPython (ternärer Operator) eine Funktion hinzugefügt.

Einführung

Hier sind die Schritte zum Hinzufügen eines ternären Operators zu CPython. Dieser Artikel verwendet Python 3.10. Weitere Informationen zum CPython-Build und zur Dateistruktur finden Sie unter hier.

2. Hinzufügung eines ternären Operators

2.1 Ternärer Python-Operator

Die ternären Python-Operatoren sind: In Python steht (Wert, wenn Bedingung wahr ist) an erster Stelle, (Bedingung) an nächster Stelle und schließlich (Wert, wenn Bedingung falsch ist). Es ist nicht üblich, dass (Bedingung) in der Syntax des ternären Operators in der Mitte liegt.

(Wert, wenn die Bedingung wahr ist) if (Bedingungen) else (BedingungenがFalseのときの値)

2.2 Modifizierter ternärer Operator

Der modifizierte ternäre Operator lautet wie folgt. (Bedingung) kommt zuerst, dann (Wert, wenn Bedingung wahr ist) und schließlich (Wert, wenn Bedingung falsch ist). In der Sprache C usw. werden die ternären Operatoren in dieser Reihenfolge beschrieben.


if (Bedingungen) then (BedingungenがTrueのときの値) else (BedingungenがFalseのときの値)

Grammer/python.gram


a = disjunction 'if' b=disjunction 'else' c=expression { _Py_IfExp(b, a, c, EXTRA) }

Grammer/python.gram


'if' a = disjunction 'then' b=disjunction 'else' c=expression { _Py_IfExp(a, b, c, EXTRA) }
$ make regen-pegen

Wert, wenn die Bedingung Falsch ist 2.3 Codeänderung Lassen Sie uns nun den ternären Python-Operator auf den in 2.2 gezeigten ändern. Der ternäre Operator ist bereits in Python vorhanden. Sie können dies also verwenden und denselben Prozess aufrufen, wenn dann etwas anderes eintritt. Hier wird nur python.gram geändert. Es gibt die folgende Beschreibung in L341 von Grammer / python.gram. Dies ist eine Beschreibung des ursprünglichen ternären Python-Operators. Um dies nachzuahmen, schreiben Sie den modifizierten ternären Operator in die folgende Zeile. Achten Sie hier beim Aufrufen von _Py_IfExp auf die Reihenfolge der Variablen. Sie können den ternären Operator hinzufügen, indem Sie die obigen Änderungen ausführen und neu erstellen. Natürlich können Sie auch die ursprüngliche Syntax des ternären Operators verwenden.

3. Demo

Der durch die obigen Änderungen implementierte ternäre Operator funktioniert wie folgt. Peek 2020-10-20 13-05.gif

Referenzmaterial

Recommended Posts

Ich habe CPython (ternärer Operator) eine Funktion hinzugefügt.
Ich habe CPython eine Funktion hinzugefügt (Build & Structure Grasp)
So rufen Sie eine Funktion auf
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Leistungsfunktion zu Sublime Text hinzugefügt
So erstellen Sie eine rekursive Funktion
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich möchte in der Einschlussnotation drucken
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich ließ Schildkröte eine Dreiecksfunktion zeichnen
Ich möchte eine Python-Umgebung erstellen
Ein einfaches IDAPython-Skript zum Benennen einer Funktion
Ich habe versucht, der CPython-Implementierung ein Post-Inkrement hinzuzufügen
Es wurde eine Funktion hinzugefügt, um gewünschte Verschiebungen in der Django-Verschiebungstabelle zu registrieren
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe eine Web-API erstellt
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe versucht, ein Wörterbuch ohne Berücksichtigung der Groß- und Kleinschreibung zu erstellen
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich möchte einfach ein Rauschmodell erstellen
Ich möchte einen DataFrame in MSSQL einfügen
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich möchte mit Python ein Fenster erstellen
Ich möchte ein Spiel mit Python machen
Ich möchte keinen Codierungstest machen
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann
Ich las "Wie man ein Hacking Lab macht"
Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Ich habe versucht, der CPython Extra Edition ein Post-Inkrement hinzuzufügen
Ich möchte leicht einen leckeren Laden finden
[Go] So schreiben oder rufen Sie eine Funktion auf
Ich möchte mit Python in eine Datei schreiben
Wie man eine öffentliche Funktion in Pytest verspottet
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich möchte eine Django-App auf Heroku hochladen
Trinity-Operator (Python)
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte einen Python-Generator viele Male iterieren
Erstellen Sie eine Funktion zur Visualisierung / Auswertung des Clustering-Ergebnisses
Ich möchte, dass DQN Puniki einen Homerun macht
100 Klopfen bei der Bildverarbeitung !! (021-030) Ich möchte eine Pause machen ...
Ich möchte einem Pandas-Datenrahmen eine group_id geben
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte mit einem Knopf am Kolben übergehen
Ich habe eine Bibliothek erstellt, um japanische Sätze schön zu brechen