717 Stimmen

Einfache Anführungszeichen vs. doppelte Anführungszeichen in Python

Der Dokumentation zufolge sind sie so gut wie austauschbar. Gibt es einen stilistischen Grund für die Verwendung des einen statt des anderen?

524voto

Will Harris Punkte 21437

Ich verwende gerne doppelte Anführungszeichen um Zeichenketten, die für Interpolationen oder natürlichsprachliche Meldungen verwendet werden, und einfache Anführungszeichen für kleine symbolähnliche Zeichenketten, breche aber die Regeln, wenn die Zeichenketten Anführungszeichen enthalten oder wenn ich es vergesse. Ich verwende dreifache doppelte Anführungszeichen für Docstrings und rohe String-Literale für reguläre Ausdrücke, auch wenn sie nicht benötigt werden.

Zum Beispiel:

LIGHT_MESSAGES = {
    'English': "There are %(number_of_lights)s lights.",
    'Pirate':  "Arr! Thar be %(number_of_lights)s lights."
}

def lights_message(language, number_of_lights):
    """Return a language-appropriate string reporting the light count."""
    return LIGHT_MESSAGES[language] % locals()

def is_pirate(message):
    """Return True if the given message sounds piratical."""
    return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None

96voto

conny Punkte 9727

Ich zitiere die offiziellen Dokumente unter https://docs.python.org/2.0/ref/strings.html :

Im Klartext: String-Literale können in passende einfache Anführungszeichen (') oder doppelte Anführungszeichen (") eingeschlossen werden.

Es gibt also keinen Unterschied. Stattdessen wird man Ihnen sagen, dass Sie den Stil wählen sollen, der dem Kontext entspricht, und konsequent zu sein . Und ich stimme zu - und füge hinzu, dass es sinnlos ist, "Konventionen" für diese Art von Dingen aufzustellen, weil man damit nur alle Neulinge verwirrt.

90voto

Daren Thomas Punkte 64742

Ich bevorzugte früher ' insbesondere für '''docstrings''' , wie ich finde """this creates some fluff""" . Auch, ' kann ohne das Zeichen Shift Taste auf meiner schweizerdeutschen Tastatur.

Ich bin inzwischen dazu übergegangen, dreifache Anführungszeichen für """docstrings""" zu entsprechen. PEP 257 .

44voto

Garth Kidd Punkte 6992

Ich stimme Will zu:

  • Doppelte Anführungszeichen für Text
  • Einfache Anführungszeichen für alles, das sich wie ein Bezeichner verhält
  • Rohe String-Literale in Anführungszeichen für Regexps
  • Dreifache doppelte Anführungszeichen für docstrings

Daran werde ich festhalten, auch wenn das eine Menge Flucht bedeutet.

Für mich sind Bezeichner in einfachen Anführungszeichen am wertvollsten, weil sie sich durch die Anführungszeichen abheben. Der Rest der Praktiken ist nur dazu da, den einzelnen Bezeichnern in Anführungszeichen etwas Raum zu geben.

26voto

Tony Meyer Punkte 9701

Wenn die Zeichenkette, die Sie haben, eine enthält, sollten Sie die andere verwenden. Zum Beispiel, "You're able to do this" , oder 'He said "Hi!"' . Ansonsten sollten Sie einfach so konsistent wie möglich sein (innerhalb eines Moduls, innerhalb eines Pakets, innerhalb eines Projekts, innerhalb einer Organisation).

Wenn Ihr Code von Leuten gelesen werden soll, die mit C/C++ arbeiten (oder wenn Sie zwischen diesen Sprachen und Python wechseln), dann sollten Sie '' für Ein-Zeichen-Zeichenfolgen, und "" für längere Saiten könnte den Übergang erleichtern. (Das Gleiche gilt für die folgenden anderen Sprachen, in denen sie nicht austauschbar sind).

Der Python-Code, den ich in freier Wildbahn gesehen habe, neigt dazu, Folgendes zu bevorzugen " über ' , aber nur geringfügig. Die einzige Ausnahme ist, dass """these""" sind viel häufiger als '''these''' nach dem, was ich gesehen habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X