it-swarm.com.de

Einfache Anführungszeichen gegen doppelte Anführungszeichen

Ich habe gerade einen Job begonnen, bei dem ich Python nachdem ich aus einem Java Hintergrund) komme, und ich bemerke, dass andere Entwickler dazu neigen, Strings mit Single zu zitieren Anführungszeichen ('') anstelle von doppelten Anführungszeichen (""). Zum Beispiel:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

Gibt es dafür einen anderen Grund als die persönlichen Vorlieben? Ist dies der richtige Weg, um Strings zu zitieren? Insbesondere möchte ich wissen, ob es eine Art Standard oder akzeptierte Best Practice gibt, die diesen Codierungsstil antreibt.

82
Eric Hydrick

Die anderen Antworten sind insofern richtig, als es keinen technischen Unterschied macht, aber ich habe eine informelle Stilregel für einige Open-Source-Projekte gesehen: Doppelte Anführungszeichen werden für Zeichenfolgen verwendet, die möglicherweise für den Benutzer sichtbar sind (unabhängig davon, ob sie benötigt werden oder nicht) Übersetzung) und einfache Anführungszeichen stehen für Zeichenfolgen, die sich auf die Funktionalität des Codes selbst beziehen (z. B. Diktatschlüssel, reguläre Ausdrücke, SQL).

Dies ist sicherlich keine universelle Regel (oder sogar in einem PEP kodifiziert), daher kommt es wie bei jedem anderen willkürlichen Aspekt der Kodierung auf lokale Regeln an.

Beachten Sie, dass PEP 8 (was ich beim Schreiben dieser Antwort nicht bemerkt hatte) sagt :

Dieser PEP gibt hierfür keine Empfehlung ab. Wähle eine Regel und halte dich daran. Wenn eine Zeichenfolge jedoch einfache oder doppelte Anführungszeichen enthält, verwenden Sie die andere, um Backslashes in der Zeichenfolge zu vermeiden. Es verbessert die Lesbarkeit.

Wie ein Kommentator betont, ist dies nicht unbedingt widersprüchlich, je nachdem, wie Sie "Regel" interpretieren. Was ich vorschlage, funktioniert jedoch nicht wirklich mit der zweiten Hälfte des Zitats.

66
detly

Es ist sehr einfach:

  • Einfache Anführungszeichen ermöglichen das uneingeschränkte Einbetten von doppelten Anführungszeichen.
  • Doppelte Anführungszeichen ermöglichen das Einbetten von nicht maskierten einfachen Anführungszeichen.

Es ist am pythonischsten, ' (Einfache Anführungszeichen) zu verwenden, bis Sie doppelte Anführungszeichen benötigen.

Das folgende Zitat stammt direkt aus der Dokumentation zu String-Literalen.

Im Klartext: String-Literale können in übereinstimmende einfache Anführungszeichen (') oder doppelte Anführungszeichen (") eingeschlossen werden. Sie können auch in übereinstimmende Gruppen von drei einfachen oder doppelten Anführungszeichen eingeschlossen werden (diese werden im Allgemeinen als dreifach zitierte Zeichenfolgen bezeichnet). Das Zeichen backslash () wird verwendet, um Zeichen zu maskieren, die ansonsten eine besondere Bedeutung haben, z. B. Zeilenumbruch, Backslash selbst oder das Anführungszeichen. Zeichenfolgenliteralen kann optional ein Buchstabe 'r' oder 'R' vorangestellt werden. Solche Zeichenfolgen werden aufgerufen Raw-Zeichenfolgen und verwenden unterschiedliche Regeln für die Interpretation von Backslash-Escape-Sequenzen. Ein Präfix von 'u' oder 'U' macht die Zeichenfolge zu einer Unicode-Zeichenfolge. Unicode-Zeichenfolgen verwenden den vom Unicode-Konsortium und ISO 10646 definierten Unicode-Zeichensatz. Einige zusätzliche Escape-Sequenzen Die unten beschriebenen sind in Unicode-Zeichenfolgen verfügbar. Ein Präfix von 'b' oder 'B' wird in Python 2 ignoriert. Dies gibt an, dass das Literal in Python 3 zu einem Byte-Literal werden soll (z. B. wenn Code wird automatisch mit 2to3) konvertiert. Ein 'u' oder Auf das Präfix 'b' kann ein Präfix 'r' folgen.

In Zeichenfolgen mit dreifachen Anführungszeichen sind Zeilenumbrüche und Anführungszeichen ohne Leerzeichen zulässig (und werden beibehalten), mit der Ausnahme, dass drei Anführungszeichen ohne Leerzeichen in einer Zeile die Zeichenfolge beenden. (Ein "Anführungszeichen" ist das Zeichen, das zum Öffnen der Zeichenfolge verwendet wird, d. H. Entweder "oder".)

21
user7519

Aus technischer Sicht macht es keinen Unterschied, aus stilistischer Sicht ein paar Gedanken:

  • Die meisten anderen Programmiersprachen verwenden doppelte Anführungszeichen.
  • Beim Schreiben in Englisch werden normalerweise doppelte Anführungszeichen verwendet.
  • Einfache Anführungszeichen sind nützlich, wenn Ihre Anwendung viel nicht-technischen/narrativen Text enthält, da Sie damit doppelte Anführungszeichen auf natürlichere Weise verwenden können. bar = '"It\'s awesome" he said.'
  • Auf der anderen Seite wird das einfache Anführungszeichen gelegentlich auch in englischer Sprache verwendet. bar = "\"It's awesome\" he said."
17
API-Beast

In Python gibt es keinen Unterschied zwischen einfachen und doppelten Anführungszeichen. In der Praxis ist der eine oder andere Stil je nach Art der Daten, mit denen Sie arbeiten, möglicherweise bequemer.

Die Art der Zitate, die "standardmäßig" verwendet werden (wenn es keinen zwingenden Grund gibt, das eine oder das andere zu verwenden), ist so ziemlich eine Frage der persönlichen Präferenz.

Weitere Informationen finden Sie im Abschnitt zu String Literals in der Dokumentation Python).

4
Greg Hewgill

Einige Dinge, die Sie beachten sollten, wenn Sie die Gewohnheit entwickeln, regelmäßig einfache oder doppelte Anführungszeichen zu verwenden.

Doppelte Anführungszeichen erfordern eine Zwei-Finger-Eingabe. und daher wahrscheinlicher für Tippfehler sowie eine Geschwindigkeitsabnahme

Ihr Editor zeigt möglicherweise einen Charakter besser als einen anderen. für ein einfacheres Debuggen der visuellen Syntax.

Docstrings verwenden dreifache Zeichen: Was sieht besser aus? """""" oder ''''''

Obwohl ich dies unter Windows nicht gesehen habe, können einige Syntax- oder Dokumentationstools doppelte einfache Anführungszeichen erwarten.

Für die meisten Python - Tutorials, die ich gesehen habe, sehe ich das Gegenteil Ihrer Erfahrung. Normalerweise werden doppelte Anführungszeichen verwendet.

4
DevPlayer

Meiner Meinung nach bevorzuge ich die Verwendung von doppelte Anführungszeichen für einen String.

Warum? Für Programmierer von anderen Sprachen kann schnell angepasst werden und den Code leichter verstehen.

Wenn ein C-Programmierer siehe:

'Writing "It\'s big?" No.'

Wird zögern, anstatt:

"Writing \"It's big?\" No."
4
Lucio