Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 736 – Kurzschreibweise für Schlüsselwortargumente bei der Ausführung

Autor:
Joshua Bambrick <jbambrick at google.com>, Chris Angelico <rosuav at gmail.com>
Discussions-To:
Discourse thread
Status:
Abgelehnt
Typ:
Standards Track
Erstellt:
28. Nov. 2023
Python-Version:
3.14
Post-History:
14. Okt. 2023, 17. Jan. 2024, 17. Jul. 2024
Resolution:
13. Mär. 2025

Inhaltsverzeichnis

Zusammenfassung

Dieser PEP schlägt vor, eine Kurzschreibweise f(x=) für das häufige Muster einzuführen, bei dem ein Schlüsselwortargument denselben Namen hat wie die Variable, die seinem Wert entspricht f(x=x).

Motivation

Die Syntax für Schlüsselwortargumente kann unnötig repetitiv und umständlich werden.

Betrachten Sie den folgenden Aufruf

my_function(
  my_first_variable=my_first_variable,
  my_second_variable=my_second_variable,
  my_third_variable=my_third_variable,
)

Der Fall, dass ein Schlüsselwortargument denselben Namen wie die Variable seines Wertes hat, ist in Python-Bibliotheken weit verbreitet. Diese Redundanz entmutigt die Verwendung von benannten Argumenten und verringert die Lesbarkeit, indem sie visuelles Rauschen erhöht.

Begründung

Es gibt zwei Möglichkeiten, eine Funktion mit Argumenten aufzurufen: nach Position und nach Schlüsselwort. Durch die Explizitheit erhöhen Schlüsselwortargumente die Lesbarkeit und minimieren das Risiko unbeabsichtigter Vertauschungen. Auf der anderen Seite werden Positionsargumente oft einfach bevorzugt, um Redundanz und visuelles Rauschen zu minimieren.

Wir vertreten die Ansicht, dass eine einfache Kurzschreibweise, die zur Vereinfachung dieses gängigen Musters verwendet wird, zahlreiche Vorteile mit sich bringen würde.

Fördert die Verwendung von benannten Argumenten

Indem diese Syntax das visuelle Rauschen reduziert, das die etablierte Syntax für Schlüsselwortargumente verursachen kann, würde sie die Verwendung von benannten Argumenten fördern, wodurch die Lesbarkeit verbessert und Fehler durch Vertauschung von Argumenten reduziert werden.

Reduziert Redundanz

Indem wir visuelles Rauschen und in einigen Fällen Codezeilen minimieren, können wir die Lesbarkeit erhöhen.

Fördert konsistente Variablennamen

Ein häufiges Problem ist, dass semantisch identische Variablen je nach Kontext unterschiedliche Namen haben. Diese Syntax würde Autoren ermutigen, bei der Benennung einer Funktion denselben Variablennamen wie der Argumentname zu verwenden, was die Konsistenz der verwendeten Variablennamen erhöhen und somit die Lesbarkeit verbessern würde.

Hebt Argumente hervor, die diesem Muster nicht folgen

Mit der aktuellen Syntax können Funktionsaufrufe, bei denen viele Argumente aus dem lokalen Kontext weitergeleitet werden, aufgrund des visuellen Rauschens andere Argumentwerte leicht übersehen lassen. Zum Beispiel

add_middleware(
    excluded_urls=excluded_urls,
    server_request=server_request,
    client_request=client_request,
    client_response=client_response,
    span_details=_get_span_details(),
    tracer=tracer,
    meter=meter,
)

Mit dieser Syntax werden die außergewöhnlichen Argumente leichter erkennbar.

add_middleware(
    excluded_urls=,
    server_request=,
    client_request=,
    client_response=,
    span_details=_get_span_details(),
    tracer=,
    meter=,
)

Anwendbarkeit auf Dictionary-Konstruktion

Diese Syntax kann auf die Dictionary-Konstruktion angewendet werden, wo ein ähnliches Muster häufig vorkommt (wobei Dictionary-Schlüssel identisch mit den Namen der Variablen sind, die ihnen als Werte zugewiesen werden), {"x": x, "y": y} oder dict(x=x, y=y). Mit dieser Funktion kann dies nun auch trivial als dict(x=, y=) geschrieben werden. Ob ähnliche Syntax in Dictionary-Literalen weiter unterstützt werden soll, ist eine offene Frage, die über den Umfang dieses PEP hinausgeht.

Spezifikation

Wir schlagen vor, eine Kurzschreibweise einzuführen, so dass, wenn der Wert eines Schlüsselwortarguments bei einem Funktionsaufruf weggelassen wird, der Wert des Arguments aus der Variablen geschlossen wird, die in diesem Namen im Aufruf-Gültigkeitsbereich übereinstimmt.

Zum Beispiel der Funktionsaufruf

my_function(my_first_variable=, my_second_variable=, my_third_variable=)

Wird exakt gleichwertig wie die folgende bestehende Syntax interpretiert.

my_function(
  my_first_variable=my_first_variable,
  my_second_variable=my_second_variable,
  my_third_variable=my_third_variable,
)

Wenn keine Variable mit diesem Namen im Aufruf-Gültigkeitsbereich übereinstimmt, wird ein NameError auf die gleiche Weise ausgelöst, wie es bei der etablierten erweiterten Syntax der Fall wäre.

Dieser Vorschlag bezieht sich nur auf Funktionsaufrufe; Funktionsdefinitionen sind von der Syntaxänderung nicht betroffen. Alle bestehenden gültigen Syntax bleiben unverändert.

Abwärtskompatibilität

Es wird nur neue Syntax hinzugefügt, die zuvor syntaktisch fehlerhaft war. Bestehende gültige Syntax wird nicht geändert. Daher sind die vorgeschlagenen Änderungen vollständig abwärtskompatibel.

Sicherheitsimplikationen

Für diese Änderung gibt es keine Sicherheitsimplikationen.

Vorhandene Lösungen

Python besitzt bereits eine sehr ähnliche Funktion in der f-String-Interpolation, bei der f'{x=}' effektiv zu f'x={x}' erweitert wird (siehe verwandtes GitHub-Issue).

Mehrere moderne Sprachen bieten ähnliche Funktionen bei der Funktionsausführung, die manchmal als „Punning“ bezeichnet werden. Zum Beispiel

Über die reine Funktionsausführung hinaus bieten mehr Sprachen ähnliche Funktionen.

Anwendbarkeit

Wir analysierten populäre Python-Bibliotheken der letzten Jahre mithilfe von diesem Skript, um Folgendes zu berechnen:

  • Die Anzahl der Schlüsselwortargumente, die bei der Ausführung die Form f(x=x) hatten.
  • Der Prozentsatz der Schlüsselwortargumente, die bei der Ausführung die Form f(x=x) hatten.
  • Die Anzahl der Codezeilen, die durch die Verwendung dieser Kurzschreibweise zur Reduzierung von Zeilenumbrüchen eingespart werden könnten.

Der Zweck dieser Übung war die Berechnung von Statistiken über die Verbreitung dieses Musters und sollte nicht als Empfehlung interpretiert werden, dass die vorgeschlagene Kurzschreibweise universell angewendet werden sollte.

Statistik Polars FastAPI Rich HTTPX
Anzahl der Schlüsselwortargumente der Form f(x=x) bei der Ausführung 1,654 1,408 566 759
Prozentsatz der Schlüsselwortargumente der Form f(x=x) bei der Ausführung 15.83% 28.11% 15.74% 45.13%
Eingesparte Zeilen 170 35 62 117

Basierend darauf stellen wir fest, dass das f(x=x)-Schlüsselwortargumentmuster weit verbreitet ist und je nach Codebasis zwischen 15% und knapp die Hälfte aller Verwendungen von Schlüsselwortargumenten ausmacht.

Vorgeschlagene Syntax

Obwohl diese Funktion bereits mehrfach in verschiedenen Formen vorgeschlagen wurde [1] [2] [3] [4] [5], [6], haben wir uns dafür entschieden, die Form f(x=) aus folgenden Gründen zu befürworten.

  • Diese Funktion wurde über einen Zeitraum von zehn Jahren häufig vorgeschlagen, wobei f(x=) oder f(=x) mit Abstand die am häufigsten vorgeschlagene Syntax war [1] [2] [6]. Dies deutet stark darauf hin, dass es die naheliegendste Notation ist.
  • Die vorgeschlagene Syntax ähnelt stark der f-String-Debug-Syntax f'{var=}' (etablierter Python-Stil) und erfüllt einen nahezu identischen Zweck.
  • Die vorgeschlagene Syntax ist exakt analog zur Ruby-Schreibweise für Schlüsselwortargumente. Siehe die Ruby 3.1.0 Release Notes (suchen Sie nach „keyword arguments“).
  • Die Syntax ist leicht zu implementieren, da es sich um eine einfache Kurzschreibweise handelt.
  • Im Vergleich zur Präfixform (siehe Abgelehnte Ideen) vermittelt diese Syntax „hier ist ein Parameter, such nach seinem Argument“, was angesichts der Semantik von benannten Argumenten angemessener ist.
  • Eine Umfrage unter Python-Entwicklern zeigt, dass dies die beliebteste Syntax unter den vorgeschlagenen ist.

Wie man das lehrt

Um die Kommunikation und Suche nach dieser Funktion zu erleichtern, könnte es auch von Vorteil sein, dieser Funktion einen Namen zu geben, z. B. „Keyword Argument Shorthand“.

Engagierte Python-Entwickler werden wahrscheinlich über typische Informationskanäle von dieser Funktion erfahren, wie z. B. Newboards, soziale Medien, Mailinglisten, Online-Foren oder Mundpropaganda. Viele weitere werden auf diese Funktion stoßen, wenn sie Code lesen und das Fehlen des Werts in einem Schlüsselwortargument bei der Ausführung bemerken, was ihre Erwartungen verletzt. Wir sollten sicherstellen, dass solche Entwickler einfachen Zugang zu Dokumentationen haben, die die Semantik dieser Funktion erklären, und dass diese Dokumentationen leicht zu finden sind. Zum Beispiel könnten das Python-Glossar und das Tutorial entsprechend aktualisiert werden und vernünftige Schlüsselwörter verwendet werden, um die Auffindbarkeit bei der Suche zu unterstützen. Eine StackOverflow-Frage könnte geschrieben werden, um diese Funktion für diejenigen zu erklären, die nach einer Erklärung suchen.

Ein Lehrer könnte diese Funktion neuen Python-Programmierern erklären, indem er sagt: „Wo Sie ein Argument sehen, dem nur ein Gleichheitszeichen folgt, wie z. B. f(x=), repräsentiert dies ein Schlüsselwortargument, bei dem der Name des Arguments und sein Wert gleich sind. Dies kann äquivalent in der erweiterten Notation f(x=x) geschrieben werden.“ Abhängig vom Hintergrund eines Schülers könnte ein Lehrer dies weiter mit der äquivalenten Syntax in anderen Sprachen oder mit Pythons f-String-Syntax f"{x=}" vergleichen.

Um dies zu verstehen, müsste ein Python-Student mit den Grundlagen von Funktionen sowie der bestehenden Syntax für Schlüsselwortargumente vertraut sein. Da diese Funktion eine relativ einfache Kurzschreibweise ist, ist es vernünftig, dass ein Student, der Schlüsselwortargumente beherrscht, dieses Konzept schnell aufnehmen kann. Dies wird durch den Erfolg der f-String-Syntax sowie ähnlicher Funktionen in anderen Sprachen belegt (siehe Vorhandene Arbeiten).

Abgelehnte Ideen

Viele alternative Syntaxformen wurden vorgeschlagen, aber keine Form außer f(=x) oder f(x=) hat nennenswerte Unterstützung erfahren. Wir listen hier einige der beliebtesten vorgeschlagenen Alternativen auf und erklären, warum wir sie letztendlich ablehnen.

f(a, b, *, x)

Einige Male wurde die Idee geäußert, die Syntax von schlüsselwort-only Funktionsdefinitionen zu übernehmen.

Für diesen Vorschlag

  • Diese Syntax ist vertraut durch ihre Verwendung zur Erforderung von schlüsselwort-only Argumenten in Funktionsdefinitionen.
  • Eine Umfrage unter Python-Entwicklern zeigt, dass dies die zweitbeliebteste Syntax unter den vorgeschlagenen ist.

Wir widersprechen jedoch, dass

  • Für jedes gegebene Argument ist unklarer aus dem lokalen Kontext, ob es sich um ein Positions- oder ein benanntes Argument handelt. Das * könnte in einer langen Argumentliste leicht übersehen werden, und benannte Argumente könnten als Positions- oder umgekehrt gelesen werden.
  • Es ist unklar, ob Schlüsselwortargumente, für die der Wert nicht elidiert wurde, dem * folgen dürfen. Wenn ja, ist ihre relative Position verwirrend-willkürlich, aber wenn nicht, wird eine willkürliche Gruppierung zwischen verschiedenen Arten von Schlüsselwortargumenten erzwungen und die Reihenfolge der Argumente müsste geändert werden, wenn nur ein Name (das Argument oder sein Wert) geändert würde.
  • Die Verwendung von * in Funktionsaufrufen ist gut etabliert und dieser Vorschlag würde eine neue Auswirkung einführen, die Verwirrung stiften könnte. Zum Beispiel würde f(a, *x, y) etwas anderes bedeuten als f(a, *, x, y).

f(=x)

Für diese Form

  • Der Präfix-Operator ähnelt stärker der etablierten *args und **kwargs Syntax für Funktionsaufrufe.
  • Sie fällt stärker auf, wenn Argumente vertikal angeordnet sind. Insbesondere wenn die Argumente unterschiedliche Längen haben, ist es schwieriger, das Gleichheitszeichen am Ende zu finden. Da Python von links nach rechts gelesen wird, ist die Verwendung dieser Funktion dem Leser früher klarer.

Im Gegenteil

  • Obwohl die Präfixversion visuell lauter ist, gibt es praktisch keinen Bedarf dafür, dass diese Funktion ihre Anwesenheit lauter schreit als ein typisches benanntes Argument. Bis wir zum = lesen, ist klar, dass der Wert automatisch ausgefüllt wird, genauso wie der Wert im typischen Fall von Schlüsselwortargumenten klar ist.
  • Semantisch vermittelt diese Form „hier ist ein Wert, fülle den Parameter aus“, was nicht das ist, was wir vermitteln wollen.
  • Sie ähnelt der f-String-Syntax weniger.
  • Es ist weniger offensichtlich, dass beliebige Ausdrücke ungültig sind, z. B. f(=a + b), da solche Ausdrücke nach dem Gleichheitszeichen in der aktuellen Syntax für Schlüsselwortargumente zulässig sind, aber nicht davor.

f(%x) oder f(:x) oder f(.x)

Mehrere Varianten dieser Syntax wurden vorgeschlagen, wobei die Präfixform ein anderes Zeichen für = verwendet. Keine solche Form hat sich jedoch durchgesetzt und die Wahl des Symbols scheint im Vergleich zu = willkürlich. Darüber hinaus gibt es weniger Präzedenzfälle in Bezug auf bestehende Sprachfunktionen (wie f-Strings) oder andere Sprachen (wie Ruby).

Einwände

Es gibt nur wenige harte Einwände gegen die Einführung dieser Kurzschreibweise. Die meisten, die dieser Funktion nicht zugeneigt sind, gehören zu dem Lager von „Ich würde sie nicht benutzen“. Während der umfangreichen Gespräche über diese Funktion waren die folgenden Einwände jedoch am häufigsten:

Die Syntax ist hässlich

Dieser Einwand ist der häufigste. Im Gegenteil, wir argumentieren, dass

  • Dieser Einwand ist subjektiv und viele Community-Mitglieder stimmen dem nicht zu.
  • Eine fast identische Syntax ist bereits für f-Strings etabliert.
  • Programmierer werden sich im Laufe der Zeit anpassen.

Die Funktion ist verwirrend

Wir argumentieren, dass

  • Die Einführung neuer Funktionen hat typischerweise vorübergehend diese Auswirkungen.
  • Die Syntax ist der etablierten f'{x=}'-Syntax sehr ähnlich.
  • Die Funktion und die Syntax sind aus anderen beliebten modernen Sprachen vertraut.
  • Die Erweiterung von x= zu x=x ist eine triviale Funktion und von Natur aus deutlich weniger komplex als die beliebten Erweiterungen *arg und **kwarg.
  • Diese spezielle Syntaxform wurde unabhängig voneinander mehrfach vorgeschlagen, was darauf hindeutet, dass sie die naheliegendste ist [1] [2] [6].

Die Funktion ist nicht explizit

Wir erkennen an, dass der Wert des Arguments in dieser vorgeschlagenen Syntax offensichtlich „implizit“ ist. Wir glauben jedoch nicht, dass dies das ist, was der Zen of Python zu entmutigen versucht.

In dem Sinne, wie wir den Zen verstehen, sind Schlüsselwortargumente (zum Beispiel) expliziter als Positionsargumente, bei denen der Argumentname weggelassen wird und aus dem lokalen Kontext nicht ersichtlich ist. Umgekehrt ist die Kurzschreibweise für Ganzzahlen x += 1 in diesem Sinne nicht impliziter als x = x + 1, auch wenn die Variable auf der rechten Seite weggelassen wird, da sie aus dem lokalen Kontext sofort ersichtlich ist, was sie ist.

Die in diesem PEP vorgeschlagene Syntax ist viel stärker analog zum Beispiel x += 1 (wenn auch einfacher, da wir keine neue Operation einführen). Darüber hinaus wird durch die Beseitigung der Barriere von visuellem Rauschen, das durch die bestehende Syntax für Schlüsselwortargumente entsteht, diese Kurzschreibweise die Verwendung von Schlüsselwortargumenten gegenüber Positionsargumenten fördern und typische Python-Codebasen im Allgemeinen expliziter machen.

Die Funktion fügt eine weitere Möglichkeit der Ausführung hinzu

Dasselbe Argument kann gegen alle Syntaxänderungen vorgebracht werden. Dies ist eine einfache Kurzschreibweise, ähnlich wie x += 1 eine Kurzschreibweise für x = x + 1 ist, wenn x eine Ganzzahl ist. Dies ist keine „neue Art“ des Übergangs von Argumenten, sondern eine lesbarere Notation für denselben Weg.

Das Umbenennen der Variablen im aufrufenden Kontext bricht den Code

Ein NameError würde den Fehler in den meisten Fällen klarstellen. Es kann zu Verwirrung kommen, wenn eine Variable aus einem breiteren Gültigkeitsbereich denselben Namen wie die ursprüngliche Variable hat, sodass kein NameError ausgelöst wird. Dieses Problem kann jedoch auch bei Schlüsselwortargumenten mit der aktuellen Syntax auftreten (obwohl diese Kurzschreibweise es vielleicht schwieriger macht, es zu erkennen). Darüber hinaus wird die Benennung von Variablen mit demselben Namen in verschiedenen Gültigkeitsbereichen generell als schlechte Praxis angesehen und von Lintern abgemahnt.

Code-Editoren könnten das Problem anhand statischer Analysen hervorheben – f(x=) ist exakt äquivalent zum Schreiben von f(x=x). Wenn x nicht existiert, haben moderne Editoren kein Problem damit, das Problem hervorzuheben.

Diese Syntax erhöht die Kopplung

Wir erkennen an, dass, wie immer, jede Syntax das Potenzial für Missbrauch birgt und daher mit Bedacht angewendet werden sollte, um Codebasen zu verbessern. In diesem Fall, wenn ein Parameter und sein Wert in beiden Kontexten dieselbe Semantik haben, deutet dies darauf hin, dass die Verwendung dieser Syntax angemessen ist und dazu beiträgt, das Risiko einer unbeabsichtigten Desynchronisation zu verringern, die die Lesbarkeit beeinträchtigt.

Wenn die beiden Variablen jedoch unterschiedliche Semantik haben, deutet dies darauf hin, dass diese Funktion nicht verwendet werden sollte (da sie Konsistenz fördert) oder dass eine oder beide Variablen umbenannt werden sollten.

Empfehlungen für die Verwendung dieser Syntax

Wie bei jeder anderen Sprachfunktion sollte der Programmierer sein eigenes Urteilsvermögen ausüben, ob es ratsam ist, sie in einem bestimmten Kontext zu verwenden. Wir empfehlen nicht, eine Regel zur Anwendung der Funktion in allen Fällen durchzusetzen, in denen sie anwendbar ist, z. B. über Lint-Regeln oder Styleguides.

Wie in Diese Syntax erhöht die Kopplung beschrieben, schlagen wir vor, dass eine vernünftige Faustregel darin besteht, dies in Fällen zu verwenden, in denen ein Parameter und sein Argument dieselbe Semantik haben, um unbeabsichtigte Desynchronisation zu verringern, ohne unangemessene Kopplung zu verursachen.

Auswirkungen auf die Bearbeitung

Verwendung eines einfachen Texteditors

Die Bearbeitung mit einem einfachen Texteditor sollte im Allgemeinen nicht beeinträchtigt werden.

Beim Umbenennen einer Variablen mit der Methode „Suchen-Ersetzen“ kommt der Entwickler bei Verwendung dieser Syntax beim Funktionsargument bei der Ausführung auf (wie auch, wenn diese Syntax nicht verwendet worden wäre). An diesem Punkt kann er wie üblich entscheiden, ob er das Argument ebenfalls aktualisieren oder zur vollen f(x=x)-Syntax erweitern möchte.

Wie bei der aktuellen Syntax würde eine Methode „Alles suchen und ersetzen“ fehlschlagen, da das Schlüsselwortargument in den meisten Fällen bei der Funktionsdefinition nicht vorhanden wäre.

Wenn der Entwickler den Argumentnamen unverändert lässt und vergisst, seinen Wert zu aktualisieren, wird in der Regel ein NameError ausgelöst, wie in Das Umbenennen der Variablen im aufrufenden Kontext bricht den Code beschrieben.

Vorschläge für IDEs

Als Reaktion auf das Feedback der Community nehmen wir einige Vorschläge auf, wie IDEs diese Syntax handhaben könnten. Wir überlassen es jedoch den Domänenexperten, die IDEs entwickeln, ihr eigenes Ermessen zu walten zu lassen.

Die meisten Überlegungen werden vereinfacht, indem man erkennt, dass f(x=) nur eine Kurzschreibweise für f(x=x) ist und wie derzeit behandelt werden sollte.

Hervorhebung von NameErrors

IDEs bieten normalerweise eine Funktion, um Code hervorzuheben, der einen NameError verursachen könnte. Wir empfehlen, diese Syntax ähnlich der erweiterten Form f(x=x) zu behandeln, um Fälle zu identifizieren und hervorzuheben, in denen die elidierte Variable möglicherweise nicht existiert. Welche visuelle Anzeige zur Hervorhebung dieser Fälle verwendet werden kann, kann je nach IDE dieselbe oder eine andere sein als die, die mit der aktuellen Syntax verwendet würde.

Sprung zur Definition

Es gibt einige mögliche Wege, wie ein „Sprung zur Definition“-Feature implementiert werden könnte, je nach Position des Cursors.

Eine Option ist,

  • Zur Argumentposition in der Funktionsdefinition springen, wenn der Cursor auf dem Argument steht
  • Zur Definition der elidierten Variable springen, wenn der Cursor auf dem Zeichen nach dem = in unserer vorgeschlagenen Syntax steht

Eine weitere, potenziell ergänzende Option wäre, die Syntax visuell beim Überfahren mit der Maus zu erweitern und einen Strg+Klick (oder Cmd+Klick) zur Definition der Variablen zu aktivieren.

Hervorhebung anderer Referenzen

IDEs heben häufig übereinstimmende Code-Referenzen auf den Wert an der aktuellen Cursorposition hervor. Mit dieser Kurzschreibweise könnte es beim Cursor auf dem Argumentnamen von Wert sein, entweder

  • Beide Referenzen auf das Argument und seinen Wert hervorheben, was die Tatsache widerspiegelt, dass dieser Name nun beides bezeichnet.
  • Die Syntax visuell beim Überfahren mit der Maus erweitern (wie oben) und die etablierte Hervorhebungslogik gemäß dem Cursor anwenden.

Symbol umbenennen

Es gibt einige Möglichkeiten, wie IDEs ein „Symbol umbenennen“-Feature für diese Syntax unterstützen möchten. Wenn beispielsweise das Argument umbenannt wird, kann die IDE

  • Auch die Variable umbenennen, die als sein Wert in jedem aufrufenden Kontext verwendet wird, in dem diese Syntax verwendet wird.
  • Erweitern, um die vollständige Syntax zu verwenden, um die unveränderte Variable als Wert des umbenannten Arguments zu übergeben.
  • Den Entwickler auffordern, zwischen den beiden obigen Optionen zu wählen.

Die letzte Option scheint die bevorzugte zu sein, um die unbeabsichtigte Desynchronisation von Namen zu reduzieren und gleichzeitig die Änderungen für den Programmierer hervorzuheben.

Referenzimplementierung

Eine vorgeschlagene Implementierung für CPython wurde von @Hels15 bereitgestellt. Wir werden diese Implementierung erweitern, um ein AST-Knotenattribut hinzuzufügen, das für Schlüsselwörter angibt, ob der Wert elidiert wurde. Ansonsten bleibt das AST unverändert.

Referenzen


Quelle: https://github.com/python/peps/blob/main/peps/pep-0736.rst

Zuletzt geändert: 2025-04-14 02:39:58 GMT