Wird die Verwendung von '{}' in Formatzeichenfolgen als Pythonic betrachtet?

9

Ich habe gerade gelernt, dass du schreiben kannst

'{}{}'.format(string_a, string_b)

Anstatt von

'{0}{1}'.format(string_a, string_b)

In Python können Sie also die Ziffern für die Parameter des Zeichenfolgenformats weglassen, wenn Sie möchten, dass die Dinge nacheinander eingefügt werden.

Wird dies als pythonisch angesehen?

HINWEIS: "Pythonic" ist ein unter Python-Programmierern häufig verwendeter Begriff für idiomatischen Python-Code. Innerhalb der Python-Kultur besteht angesichts der expliziten Designphilosophie der Sprache "Es sollte einen - und vorzugsweise nur einen - offensichtlichen Weg geben, dies zu tun" ein klarer Konsens über Stilfragen, insbesondere für sehr spezifische Fragen wie diese. Dies wird aus "The Zen of Python" zitiert, einer Reihe von Aphorismen, die einen großen Beitrag zur Definition von "Pythonic" leisten und in jeder Python-Distribution enthalten sind (geben Sie an einer beliebigen Python-Interpreter-Befehlszeile ein, um import thissie anzuzeigen ).

Ghopper21
quelle
4
@ GregHewgill: "Pythonic" ist ein ziemlich häufig verwendeter Begriff, der im Grunde genommen "idiomatisches Python" bedeutet. Die Art von Python-Code, die Liebhaber von qualitativ hochwertigem Python-Code stilistisch ansprechend finden würden.
Carson63000
1
Diese sehr spezifische Funktion ist eindeutig in Python enthalten (es ist nicht wirklich eine Stilfrage). Warum sollte sie also nach keiner vernünftigen Definition als "Pythonic" angesehen werden? Soweit ich weiß, gibt es keine Merkmale der Sprache, die als "unpythonisch" gelten.
Greg Hewgill
4
Als Referenz wurde die {}Funktion in Python 3.1 eingeführt . Die Verbesserung, die diesen Zusatz veranlasste, war Problem 5237 . Guido hat mehrere Kommentare zu diesem Thema, darunter "Bitte machen Sie weiter und beenden Sie dies. Ich bin froh, dass dies geschieht!" Wenn das nicht als "Pythonic" gilt, weiß ich nicht, was es ist.
Greg Hewgill
4
Für Leute, die dafür stimmen, diese Frage zu schließen, darf ich nur darauf hinweisen, dass das, was Pythonic ist oder nicht, ein wichtiger Teil der Python-Codierungskultur ist, und ich würde argumentieren, dass die Codierungskultur ein wichtiges Element der Softwareentwicklung ist, ein akzeptiertes Thema von Diese Seite.
Ghopper21
2
@Andrea - genau das war mein erster Gedanke, aber es ist schwer zu argumentieren, dass die BDFL es für unpythonisch hält. Nachdem ich das Zitat von ihm dazu gesehen hatte, schaute ich noch einmal auf das Zen von Python und dachte, dies sei vielleicht ein Fall von "Praktikabilität schlägt Reinheit"? Das Grundprinzip in der Diskussion (in Gregs Antwort verlinkt) liegt in der Bequemlichkeit für den Code-Schreiber. In jedem Fall ist die expliziteste Methode zur Verwendung der Zeichenfolgenformatierung "{a}{b}".format(a=string_a, b=string_b)eher die Nummerierung. Wie auch immer, das ist nur meine Spekulation und das Lesen zwischen den Zeilen des Denkens ...
Ghopper21

Antworten:

12

Die {}Funktion wurde in Python 3.1 eingeführt (und auch in Python 2.7 zurückportiert). Die Verbesserung, die diesen Zusatz veranlasste, war Problem 5237 . Guido hat mehrere Kommentare zu diesem Thema, darunter:

Bitte machen Sie weiter und beenden Sie dies. Ich bin froh, dass das rein geht!

Ein Feature mit dieser Art von Billigung durch die BDFL würde in jeder Hinsicht als "Pythonic" angesehen werden.

Greg Hewgill
quelle