Einfache Anführungszeichen gegen doppelte Anführungszeichen [geschlossen]

79

Ich habe gerade einen Job begonnen, bei dem ich Python schreibe, nachdem ich aus einem Java-Hintergrund gekommen bin, und ich bemerke, dass andere Entwickler dazu neigen, Zeichenfolgen in einfachen Anführungszeichen ( '') anstatt in doppelten Anführungszeichen ( "") zu zitieren . Zum Beispiel:

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

Gibt es einen besonderen Grund für diese andere als persönliche Präferenz? Ist dies der richtige Weg, um Zeichenfolgen zu zitieren? Insbesondere möchte ich wissen, ob es eine Art von Standard oder bewährten Verfahren gibt, die diesen Codierungsstil bestimmen.

Eric Hydrick
quelle
5
Wenn Sie jemals in zu bekommen Ruby, es tatsächlich ist ein technischer Unterschied zwischen einfachen und doppelten Anführungszeichen. Doppelte Anführungszeichen unterstützen die Interpolation von Zeichenfolgen - einfache Anführungszeichen werden als Literale analysiert.
KChaloux
5
Gleiches gilt für Perl und die meisten Shells.
Blrfl
18
Wie ist diese Frage "nicht konstruktiv"? Als absoluter Python-Anfänger muss ich das wissen. Wenn Sie ein Bash-Skript schreiben, gibt es einen großen Unterschied.
Magicsowon
19
Nicht konstruktiv? Meine Güte. Das erste Google-Ergebnis für "python single double quotes" sagt Ihnen, was Sie schnell wissen müssen. Vielen Dank, dass Sie Eric gefragt und Detly geantwortet haben
aggieNick02

Antworten:

65

Die anderen Antworten sind insofern richtig, als sie keinen technischen Unterschied machen, aber ich habe bei einigen Open-Source-Projekten eine informelle Stilregel 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. diktierte Schlüssel, reguläre Ausdrücke, SQL).

Dies ist sicherlich keine universelle Regel (oder sogar in einem PEP kodifiziert), so dass es wie bei jedem anderen beliebigen Aspekt der Kodierung auf lokale Regeln ankommt.

Beachten Sie, dass in PEP 8 (das mir beim Schreiben dieser Antwort nicht aufgefallen war) Folgendes steht :

Dieses 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 umgekehrte Schrägstriche in der Zeichenfolge zu vermeiden. Es verbessert die Lesbarkeit.

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

tückisch
quelle
1
Dies mag ein Hausstil sein, aber es ist gegen PEP 8: Wählen Sie einen aus und verwenden Sie ihn für die gesamte Datei, unabhängig vom Inhalt.
Nils von Barth
4
@NilsvonBarth Der PEP sagt "Wähle eine Regel und halte dich daran", nicht "Wähle ein Trennzeichen und halte dich daran". "Doppelte Anführungszeichen für vom Benutzer sichtbaren Text, einfache Anführungszeichen für vom Computer verwendete Dinge" scheint eine perfekte Regel zu sein.
Tanner Swett
1
@ Tanner Swett Sorry, du hast recht; Es ist der Google Python- Styleguide
Nils von Barth
Schwarz formatiert Python-Zeichenfolgen so, dass sie in doppelte Anführungszeichen eingeschlossen sind. Selbst jslint möchte, dass JavaSciprt-Zeichenfolgen in doppelte Anführungszeichen gesetzt werden. Die meisten älteren Sprachen stellten nicht einmal Optionen zur Verfügung. Nur weil Sie es können, heißt das nicht, dass Sie es sollten. Natürlich gibt es einige Fälle, in denen dies eine sehr schöne Sache ist, zum Beispiel wenn Sie ein Zitat in der Zeichenfolge haben. In der Praxis sollten die meisten Ihrer Zeichenfolgen jedoch aus einem Datensatz stammen, der in Ihrer Codebasis nicht fest codiert ist.
Bobort
1
@bobort Auch wenn Sie Zeichenfolgen in einem Übersetzungs- oder UI-System suchen, benötigen Sie häufig Zeichenfolgenschlüssel für diejenigen in Ihrem Code. Aber ich stimme zu, dass sich die Dinge weiterentwickelt haben, und diese Unterscheidung hat keinen wirklichen Nutzen.
Detly
21

Es ist sehr einfach:

  • Einfache Anführungszeichen ermöglichen die Einbettung von doppelten Anführungszeichen ohne Escapezeichen.
  • Doppelte Anführungszeichen ermöglichen das Einbetten nicht maskierter einfacher Anführungszeichen.

Am besten verwenden Sie Pythonic '(einfache Anführungszeichen), bis Sie doppelte Anführungszeichen benötigen.

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

sind in Unicode-Strings verfügbar. Ein Präfix von 'b' oder 'B' wird in Python 2 ignoriert. Es gibt an, dass das Literal in Python 3 ein Byte-Literal werden soll (z. B. wenn Code automatisch mit 2to3 konvertiert wird). Auf ein 'u' oder 'b' Präfix kann ein 'r' Präfix folgen.

In Zeichenfolgen mit dreifachen Anführungszeichen sind Zeilenumbrüche und Anführungszeichen zulässig (und werden beibehalten), mit der Ausnahme, dass drei Anführungszeichen hintereinander die Zeichenfolge beenden. (Ein "Anführungszeichen" ist das Zeichen, mit dem die Zeichenfolge geöffnet wird, dh entweder "oder".)


quelle
15
Die Frage ist natürlich, warum Pythonic einfache Anführungszeichen bevorzugt, wenn fast jede andere Sprache doppelte Anführungszeichen verwendet.
Martin Beckett
13
@MartinBeckett weil
3
Ahh natürlich ;-)
Martin Beckett
6
@JarrodRoberson: Ich denke "weil" (oder "weil", wenn Sie so wollen) ist eine gültige Antwort, wenn es in einem PEP (oder ähnlichem) geschrieben ist, dass es die pythonische Art ist . Ansonsten ist es nur eine persönliche Entscheidung.
Joachim Sauer
5
einfache Anführungszeichen sehen sauberer aus und brauchen auch keine Umschalttaste zum
Tippen
17

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

  • Die meisten anderen Programmiersprachen verwenden doppelte Anführungszeichen.
  • Beim Schreiben in englischer Sprache werden in der Regel doppelte Anführungszeichen verwendet.
  • Einfache Anführungszeichen sind nützlich, wenn Ihre Anwendung viele nichttechnische / erzählerische Texte enthält, da Sie mit ihnen auf natürlichere Weise doppelte Anführungszeichen verwenden können. bar = '"It\'s awesome" he said.'
  • Auf der anderen Seite wird das einfache Anführungszeichen auch gelegentlich in englischer Sprache verwendet. bar = "\"It's awesome\" he said."
API-Biest
quelle
Beachten Sie, dass "oft auch in technischen Zeichenfolgen verwendet wird" {dumb_thing}, aber das ist auch für uns zu dumm!
Christian Sauer
4

Es gibt keinen Unterschied zwischen der Verwendung von einfachen und doppelten Anführungszeichen in Python. In der Praxis können Sie je nach Art der Daten, mit denen Sie arbeiten, den einen oder anderen Stil bequemer finden.

Die Art der Anführungszeichen, die "standardmäßig" verwendet werden (wo 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-Literalen in der Python-Dokumentation.

Greg Hewgill
quelle
4

Einige Dinge, die Sie berücksichtigen sollten, wenn Sie sich angewöhnen, regelmäßig einfache oder doppelte Anführungszeichen zu verwenden.

Doppelte Anführungszeichen erfordern die Eingabe mit zwei Fingern. und daher wahrscheinlicher für Tippfehler sowie eine Geschwindigkeitsabnahme

Ihr Editor zeigt möglicherweise einen Charakter besser als einen anderen. für ein einfacheres visuelles Syntax-Debugging.

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

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

Bei den meisten Python-Tutorials sehe ich das Gegenteil Ihrer Erfahrung. Ich sehe normalerweise doppelte Anführungszeichen.

DevPlayer
quelle
4

Meiner Meinung nach bevorzuge ich die doppelten Anführungszeichen für eine Zeichenfolge.

Warum? Für Programmierer anderer Sprachen lässt sich der Code schneller anpassen und leichter verstehen.

Wenn ein C-Programmierer sieht:

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

Wird zögern, anstatt:

"Writing \"It's big?\" No."
Lucio
quelle
3
"Schreiben" Es ist groß? "Nein."
API-Beast,
@Lucio Das habe ich getan, ich wusste nur nicht, ob ich gegen einen etablierten Python-Standard verstoßen habe oder nicht.
Eric Hydrick
@ EricHydrick Nein, Sie können für die eine oder andere wählen.
Lucio