Einfache Anführungszeichen vs.doppelte Anführungszeichen in Python [geschlossen]

StackOverflow https://stackoverflow.com/questions/56011

  •  09-06-2019
  •  | 
  •  

Frage

Laut Dokumentation sind sie praktisch austauschbar.Gibt es einen stilistischen Grund, eines über dem anderen zu verwenden?

War es hilfreich?

Lösung

Ich mag doppelte Anführungszeichen um Strings zu verwenden, die für die Interpolation verwendet werden, oder die natürliche Sprache Meldungen sind, und einfache Anführungszeichen für kleine Symbol wie Strings, aber die Regeln brechen, wenn die Strings Anführungszeichen enthalten, oder wenn ich vergessen. Ich benutze triple doppelte Anführungszeichen für Docstrings und rohe Stringliterale 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

Andere Tipps

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

  

Im Klartext:. Stringliterale können in passenden einfachen Anführungszeichen ( ') oder doppelte Anführungszeichen ( ") gesetzt werden

So gibt es keinen Unterschied. Stattdessen Sie Menschen sagen zu wählen, welche Art, die den Kontext passt, und konsequent sein . Und ich würde zustimmen -. Füge hinzu, dass es sinnlos ist, zu versuchen, mit „Konventionen“ für diese Art der Sache zu kommen, weil Sie nur alle Neulinge verwirrend am Ende

Ich benutzen ' bevorzugen, vor allem für '''docstrings''', wie ich """this creates some fluff""" finden. Auch kann ' ohne die Umschalttaste eingegeben werden auf meine Schweizerdeutsch Tastatur.

Ich habe da für """docstrings""" zur Verwendung von dreifachen Anführungszeichen geändert, um PEP 257 zu entsprechen .

Ich bin mit Will:

  • doppelte Anführungszeichen für Text
  • Single-Angebote für etwas, das wie eine Kennung
  • verhält
  • Double zitierte raw Stringliterale für regexps
  • Verdreifachung doppelte Anführungszeichen für Docstrings

Ich werde mit dabei bleiben, auch wenn es eine Menge zu entkommen bedeutet.

ich den größten Wert aus einzelnen Bezeichner in Anführungszeichen, weil die Zitate stehen aus. Der Rest der Praxis gibt es nur diesen einzelnen Bezeichner in Anführungszeichen einig stehenden Raum zu geben.

Wenn die Zeichenfolge Sie enthält eine haben, dann sollten Sie die anderen verwenden. Zum Beispiel "You're able to do this" oder 'He said "Hi!"'. Other than that, sollten Sie einfach so konsistent wie möglich (innerhalb eines Moduls, in einem Paket, innerhalb eines Projektes, innerhalb einer Organisation) sein.

Wenn Ihr Code wird von Menschen zu lesen, die mit C / C ++ arbeiten (oder wenn Sie zwischen diesen Sprachen und Python wechseln), dann '' Verwendung für Single-Zeichenkette und "" für längere Strings könnte helfen, den Übergang zu erleichtern . (Das gleiche gilt für folgende andere Sprachen, in denen sie nicht austauschbar sind).

Der Python Code, den ich in der freien Natur gesehen habe neigt " über ' zu bevorzugen, aber nur leicht. Die einzige Ausnahme ist, dass """these""" sind viel häufiger als '''these''', von dem, was ich gesehen habe.

Dreifach zitierte Kommentare eine interessante subtopic dieser Frage sind. PEP 257 gibt triple-Angebote für doc Strings . Ich habe eine schnelle Überprüfung mit Google Code Search und festgestellt, dass triple doppelte Anführungszeichen in Python wie etwa 10x so beliebt sind? drei einfache Anführungszeichen - 1.3M vs 131K Vorkommen in dem Code Google-Indizes. So in der Multi-Line Wenn Ihr Code wahrscheinlich wird vertrauter Menschen sein, wenn es triple doppelte Anführungszeichen verwendet.

"If you're going to use apostrophes, 
       ^

you'll definitely want to use double quotes".
   ^

Aus diesem einfachen Grunde, verwende ich immer doppelte Anführungszeichen auf der Außenseite. immer

Apropos Flaum, was gut strafft Ihre Stringliterale mit 'wenn du gehst zu haben Escape-Zeichen verwenden Apostrophe zu vertreten? Beleidigt es Coder Romane zu lesen? Ich kann mir nicht vorstellen, wie schmerzhaft High-School-Englisch-Klasse war für Sie!

Python verwendet Anführungszeichen etwas wie folgt aus:

mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'

print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6

Welche gibt die folgende Ausgabe:

this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'

Ich verwende doppelte Anführungszeichen im Allgemeinen, aber nicht für einen bestimmten Grund - wahrscheinlich gerade aus Gewohnheit von Java

.

Ich denke, Sie sind auch eher Apostrophe in einer Inline-Zeichenkette wollen, als Sie doppelte Anführungszeichen wollen sind.

Persönlich halte ich mich mit dem einen oder anderen. Es spielt keine Rolle. Und zu jedem Zitat Ihre eigene Bedeutung Von der nur anderen Leuten zu verwirren, wenn Sie zusammenarbeiten.

Es ist wahrscheinlich eine stilistische Präferenz mehr als alles andere. Ich habe gerade überprüft PEP 8 und sah keine Erwähnung von Einzel gegen doppelte Anführungszeichen.

Ich ziehe einfache Anführungszeichen, weil sein nur einen Tastendruck statt zwei. Das heißt, ich muss nicht die Shift-Taste Maische Apostroph zu machen.

  

In Perl Sie einfache Anführungszeichen verwenden möchten, wenn Sie eine Zeichenfolge haben, die benötigt keine Variablen interpoliert oder Escape-Zeichen wie \ n, \ t, \ r, etc.

macht PHP die gleiche Auszeichnung wie Perl: Inhalt in einfachen Anführungszeichen nicht (auch nicht \ n umgewandelt werden) interpretiert werden, im Gegensatz Anführungszeichen zu verdoppeln, die Variablen enthalten kann ihren Wert ausgedruckt haben

.

Python nicht, fürchte ich. Technisch einen Namen / Text aus einer Variablen in Python zu sehen ist, gibt es keinen $ Token (oder ähnliches) zu trennen. Beide Eigenschaften machen Python besser lesbar, weniger verwirrend, nachdem alle. Einfache und doppelte Anführungszeichen austauschbar in Python verwendet werden können.

Ich entschied mich für doppelte Anführungszeichen zu verwenden, weil sie leichter zu sehen.

Ich verwende nur, was zu der Zeit meine Fantasie schlägt; es ist bequem zwischen den beiden auf einer Laune heraus wechseln zu können!

Natürlich, wenn Zitat characetrs zitiert, zwischen den beiden Schalt vielleicht nicht so wunderlich sein, nachdem alle ...

Ihr Team Geschmack oder Ihres Projekts Code-Richtlinien.

Wenn Sie in einer mehrsprachigen Umgebung sind, können Sie möchten die Verwendung der gleichen Art von Anführungszeichen für Strings fördern, die die andere Sprache verwendet, zum Beispiel. Else, wie ich persönlich am besten das Aussehen von ‚

Keine soweit ich weiß. Obwohl, wenn Sie zu einem bestimmten Code aussehen „“ häufig für Textzeichenfolgen verwendet wird (ich glaube 'häufiger innerhalb Text als ist „) und‚‘erscheint in hashkeys und solchen Dingen.

Ich ziele darauf ab, beiden Pixel und Überraschung zu minimieren. Ich ziehe es typischerweise ' um Pixel zu minimieren, aber " statt, wenn die Zeichenfolge einen Apostroph hat, wieder Pixel zu minimieren. Für eine docstring jedoch ziehe ich """ über ''', weil dieser nicht-Standard, ungewöhnlich ist, und daher überraschend. Wenn ich jetzt eine Reihe von Strings, wo ich " gemäß der obigen Logik, sondern auch eine, die mit einem ' wegkommen, kann ich immer noch " verwenden kann es Konsistenz zu erhalten, nur Überraschung zu minimieren.

Vielleicht hilft es der Pixel Minimierung Philosophie in der folgenden Art und Weise zu denken. Würden Sie eher, dass englische Zeichen wie A B C oder AA BB CC geschaut? Letztere Wahl vergeudet 50% der nicht-leeren Pixel.

Ich benutze doppelte Anführungszeichen, weil ich in den meisten Sprachen (C ++, Java, VB ...) außer Bash so seit Jahren tun, weil ich auch doppelte Anführungszeichen in normalen Text verwenden und weil ich verwende eine (modifizierte) nicht Englisch Tastatur, wo beiden Zeichen der Shift-Taste erforderlich.

' = "

/ = \ = \\

Beispiel:

f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")

Ergebnisse gleich sind

= >> nein, sie sind nicht das gleiche. Ein einzelner Schrägstrich wird Escape-Zeichen. Sie passieren nur kein Glück in diesem Beispiel, weil \k und \w sind nicht gültig Fluchten wie \t oder \n oder \\ oder \"

Wenn Sie einzelne Schrägstriche verwenden möchten (und haben sie als solche interpretiert), dann müssen Sie eine „rohe“ String verwenden. Sie können dies tun, indem sie ein ‚r‘ vor der Zeichenfolge setzen

im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'

Was Pfade in Windows betrifft, so sind Schrägstriche die gleiche Art und Weise interpretiert. Klar, dass die Zeichenfolge selbst ist aber anders. Ich würde nicht garantieren, dass sie, obwohl diese Art und Weise auf einem externen Gerät behandelt sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top