Python-String wird standardmäßig zu f-String (vielleicht)

Einführung

Der Python Language Summit 2020 fand am 15. und 16. April statt. Dies ist ein Meeting, bei dem Entwickler von Python-Implementierungen (PyPy usw. zusätzlich zum ursprünglichen CPython) ein Meeting abhalten, um den aktuellen Status und die Zukunft der Sprache selbst und der Standardbibliotheken zu diskutieren und eine Einigung zu erzielen. Und das.

Aufgrund der Verbreitung des Corona-Virus in diesem Jahr scheint es ausnahmslos online zu sein, aber wenn man sich die Tagesordnung für zwei Tage ansieht, ist es ziemlich interessant.

Darin habe ich die ersten "Alle Zeichenketten für Zeichenketten erstellen" und [Dieser Blog-Beitrag](https://pyfound.blogspot.com/2020/04/all-strings- Ich möchte kurz zusammenfassen, welche Art von Diskussion auf der Grundlage von "get-f-strings-python.html" geführt wurde.

Was ist eine f-Zeichenfolge?

Bevor wir zur Diskussion kommen, wollen wir uns ansehen, was der f-String ist. Die f-Zeichenfolge ist eine in Python 3.6 eingeführte Funktion, mit der Variablen und Ausdrücke in einen Teil der Zeichenfolge eingefügt und zur Laufzeit ersetzt werden.

Zum Beispiel

>>> x = 1
>>> print(f"Der Wert von x ist{x}ist")
Der Wert von x ist 1

Es wird sein. Wenn Sie versuchen, vor der Einführung des f-Strings etwas Ähnliches zu tun

print("Der Wert von x ist%d" % x)

Oder

print("Der Wert von x ist{}ist".format(x))

Ich habe es getan. In jedem Fall wurden der Ort, an dem durch die Variable ersetzt werden soll, und der Ort, an dem die Variable angegeben werden soll, getrennt, was schwer zu verstehen war und ein Teil war, an dem wahrscheinlich Fehler auftraten. Dies wurde sofort mit der Einführung der Zeichenfolge f einfacher.

In anderen Sprachen zum Beispiel JavaScript

let x = 1
console.log(`Der Wert von x ist${x}ist`)

Sie können das schreiben, und Ruby, Scala, C # usw. haben ähnliche Funktionen. Es scheint also, dass Sie in der Flut der Zeit sind.

Die Funktion des f-Strings wurde beispielsweise in Python 3.8 leicht erweitert.

>>> x = 1
>>> y = 2
>>> print(f"{x=}, {y=}, {x+y=}")
x=1, y=2, x+y=3

Kann gemacht werden. Mit anderen Worten, durch Hinzufügen von = am Ende von {} wird nicht nur der Wert der Variablen oder des Ausdrucks, sondern auch die Variable oder der Ausdruck selbst in die Ausgabe aufgenommen. Es ist nützlich für ein kleines Debugging, daher lohnt es sich, sich daran zu erinnern.

Diskussion auf dem Python Language Summit 2020

Sehr nützliche F-Saite wie oben. Es scheint, dass einige Leute aus diesem Grund von Python 2 zu Python 3 gekommen sind, aber da es häufiger verwendet wird, ist Unzufriedenheit herausgekommen. Die Diskussion, um es zu lösen, ist die erste Agenda des Python Language Summit 2020. Die Tagesordnung wurde von Eric Smith eingereicht, der ursprünglich das PEP für die Einführung von F-Strings im Jahr 2015 verfasst hatte.

Dies ist das Problem, mit dem wir uns hier befassen.

>>> x = 1
>>> print("Der Wert von x ist{x}ist")
Der Wert von x ist{x}ist

Verstehst du? "Oh, ich habe vergessen, das" f "vor die Schnur zu setzen (^^;" ".

Um diesen Fehler zu vermeiden, hat er einen Programmierer gesehen, der jedem String ein "f" mit oder ohne Variablensubstitution voranstellt. Sein Vorschlag ist also

"Machen Sie die Zeichenfolge standardmäßig zu einer f-Zeichenfolge"

Das ist. Als wir die f-Saite in 3.6 einführten, schien es zunächst so, als wäre es ein solcher Vorschlag, aber er wurde abgelehnt, weil es sich um eine zu große destruktive Änderung handelte, die sich auf das aktuelle "f" konzentrierte.

Dieser Vorschlag verwendet die f-Zeichenfolge mit oder ohne "f" und führt eine zusätzliche "p-Zeichenfolge" ein. Wenn der Zeichenfolge "p" vorangestellt ist, werden die vorherigen Zeichen verwendet Es wurde als Säule behandelt. Dies führt zu keiner Leistungsverschlechterung.

Andererseits weiß der Erfinder Smith auch, dass es einige Probleme gibt, zum Beispiel muss er ein neues String-Präfix wie "p" einführen. Es wird auch eine große Veränderung sein

from __future__ import all_fstrings

Ich möchte dies nur aktivieren, wenn es eine Importanweisung gibt, die besagt. Wenn Sie dies tun, können Sie es nicht einfach entfernen, sodass dieser Vorschlag abgelehnt wurde.

Die Teilnehmer äußerten sich zu diesem Vorschlag.

Yarko Tymciurak stellte die Frage: "Warum und wie erklären Sie Anfängern" p "?" Smith gab zu, dass "p" die Sprachspezifikation etwas komplizierter machen würde ", antwortete aber:" In Wirklichkeit wird "p" nicht so oft verwendet, und die Erklärung ist ziemlich offensichtlich. " Es war.

Einige Teilnehmer waren bereit, diese Änderung vorzunehmen, und Brett Cannon erklärte, dass "das Entfernen des Präfixes" f "Anfängern das Erlernen von Python erleichtern würde."

Larry Hastings sagte: "PHP-Strings haben diese Art von Spezifikation, und ich denke, die Skriptkinder mögen sie wirklich." Aber er sagte: "Ups, ich habe vergessen," f "hinzuzufügen." Um dies zu vermeiden, denke ich, dass es ein Fehler ist, den Sie sofort bemerken werden, aber ändern Sie die Sprachspezifikationen nur dafür? "

Viele Teilnehmer waren sich einig, dass die F-Saite von Anfang an die Standardeinstellung sein sollte, aber Paul Moore, Guido van Rossum (der Gründer von Python) und andere sind eher schädlich als profitabel. Ich hatte Angst, dass es wachsen würde. Und diese Agenda endete mit der Fortsetzung der Diskussion in ML.

Zusammenfassung

Ich persönlich bin damit einverstanden, die F-Saite zur Standardeinstellung zu machen, aber ich dachte, es wäre nicht so einfach. Es war ein kurzer Blog-Beitrag, aber ich denke, es war gut zu sehen, dass die Teilnehmer Änderungen an den Sprachspezifikationen sorgfältig diskutierten und dabei verschiedene Aspekte berücksichtigten.

Recommended Posts

Python-String wird standardmäßig zu f-String (vielleicht)
[Python] Die f-Zeichenfolge sollte zum Einbetten der Zeichenfolge verwendet werden
Primzahlbeurteilung durch Python
Python-Standardargumentfalle
Visualisierungsnotiz von Python
Kommunikationsverarbeitung durch Python
Python-Standardargumentverhalten
Beamformer-Antwort von Python
Vergleichen Sie Zeichenfolgen in Python
Strings in Python umkehren
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen