Laut Dokumentation sind sie ziemlich austauschbar. Gibt es einen stilistischen Grund, einen über den anderen zu verwenden?
Laut Dokumentation sind sie ziemlich austauschbar. Gibt es einen stilistischen Grund, einen über den anderen zu verwenden?
Antworten:
Ich verwende gerne doppelte Anführungszeichen um Zeichenfolgen, die für die Interpolation verwendet werden oder Nachrichten in natürlicher Sprache sind, und einfache Anführungszeichen für kleine symbolähnliche Zeichenfolgen, verstoße jedoch gegen die Regeln, wenn die Zeichenfolgen Anführungszeichen enthalten oder wenn ich es vergesse. Ich verwende dreifache doppelte Anführungszeichen für Dokumentzeichenfolgen und rohe Zeichenfolgenliterale 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
Zitieren der offiziellen Dokumente unter https://docs.python.org/2.0/ref/strings.html :
Im Klartext: String-Literale können in übereinstimmende einfache Anführungszeichen (') oder doppelte Anführungszeichen (") eingeschlossen werden.
Es gibt also keinen Unterschied. Stattdessen werden Sie aufgefordert, den Stil auszuwählen, der zum Kontext passt, und konsistent zu sein . Und ich würde dem zustimmen - und hinzufügen, dass es sinnlos ist, "Konventionen" für diese Art von Dingen zu entwickeln, weil Sie am Ende nur Neulinge verwirren werden.
Ich habe es vor '
allem bevorzugt '''docstrings'''
, wie ich finde """this creates some fluff"""
. Auch '
ohne die eingegeben werden ShiftTaste auf meiner Schweizerdeutsch Tastatur.
Ich habe seitdem dreifache Anführungszeichen für verwendet """docstrings"""
, um PEP 257 zu entsprechen .
"
erfordert eine Umschalttaste nur auf einer PC-QWERTZ-Tastatur. Auf meiner Tastatur "
ist es eigentlich einfacher zu tippen.
Ich bin bei Will:
Ich bleibe dabei, auch wenn es viel Flucht bedeutet.
Ich bekomme den größten Nutzen aus einfach zitierten Bezeichnern, die aufgrund der Anführungszeichen hervorstechen. Der Rest der Praktiken dient nur dazu, diesen einfach zitierten Kennungen Stehplätze zu geben.
Wenn die Zeichenfolge, 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 Personen gelesen wird, die mit C / C ++ arbeiten (oder wenn Sie zwischen diesen Sprachen und Python wechseln), kann die Verwendung ''
für Zeichenfolgen mit einem Zeichen und ""
für längere Zeichenfolgen den Übergang erleichtern. (Ebenso, um anderen Sprachen zu folgen, in denen sie nicht austauschbar sind).
Der Python - Code , den ich in der freien Natur gesehen habe neigt zu begünstigen "
über '
, aber nur leicht. Die einzige Ausnahme ist, dass sie """these"""
viel häufiger sind als das '''these'''
, was ich gesehen habe.
Dreifach zitierte Kommentare sind ein interessantes Unterthema dieser Frage. PEP 257 gibt dreifache Anführungszeichen für Dokumentzeichenfolgen an . Ich habe eine schnelle Überprüfung mit der Google-Codesuche durchgeführt und festgestellt, dass dreifache doppelte Anführungszeichen in Python etwa zehnmal so beliebt sind wie dreifache einfache Anführungszeichen - 1,3 Millionen gegenüber 131.000 Vorkommen in den Code-Google-Indizes. Im mehrzeiligen Fall wird Ihr Code den Leuten wahrscheinlich vertrauter sein, wenn er dreifache doppelte Anführungszeichen verwendet.
"If you're going to use apostrophes,
^
you'll definitely want to use double quotes".
^
Aus diesem einfachen Grund verwende ich außen immer doppelte Anführungszeichen. Immer
Apropos Flusen: Was nützt es, Ihre String-Literale zu optimieren, wenn Sie Escape-Zeichen verwenden müssen, um Apostrophe darzustellen? Beleidigt es Programmierer, Romane zu lesen? Ich kann mir nicht vorstellen, wie schmerzhaft der Englischunterricht in der High School für Sie war!
Python verwendet Anführungszeichen wie folgt:
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
Welches 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'
"""This is a string with "quotes""""
Löst aber einen SyntaxError aus. Wie könnte diese Situation gelöst werden? (wie mit '''This is a string with 'quotes''''
)
'''This is a string with "quotes"'''
.
Ich verwende im Allgemeinen doppelte Anführungszeichen, aber nicht aus einem bestimmten Grund - wahrscheinlich nur aus Gewohnheit von Java.
Ich denke, Sie möchten auch eher Apostrophe in einer Inline-Literalzeichenfolge als doppelte Anführungszeichen.
Es ist wahrscheinlich mehr als alles andere eine stilistische Präferenz. Ich habe gerade PEP 8 überprüft und keine Erwähnung von einfachen oder doppelten Anführungszeichen gesehen.
Ich bevorzuge einfache Anführungszeichen, weil es nur ein Tastendruck statt zwei ist. Das heißt, ich muss die Umschalttaste nicht drücken, um ein einfaches Anführungszeichen zu erstellen.
In Perl möchten Sie einfache Anführungszeichen verwenden, wenn Sie eine Zeichenfolge haben, die keine Variablen oder maskierten Zeichen wie \ n, \ t, \ r usw. interpolieren muss.
PHP macht den gleichen Unterschied wie Perl: Inhalt in einfachen Anführungszeichen wird nicht interpretiert (nicht einmal \ n wird konvertiert), im Gegensatz zu doppelten Anführungszeichen, die Variablen enthalten können, deren Wert ausgedruckt werden soll.
Python leider nicht. Technisch gesehen gibt es in Python kein $ -Token (oder ähnliches), um einen Namen / Text von einer Variablen zu trennen. Beide Funktionen machen Python schließlich lesbarer und weniger verwirrend. Einfache und doppelte Anführungszeichen können in Python synonym verwendet werden.
r
vor dem Zeichenfolgenliteral hinzufügen . So print 'a\nb'
werden Sie zwei Zeilen print r'a\nb'
drucken , aber Sie werden eine drucken.
Ich habe mich für doppelte Anführungszeichen entschieden, weil sie leichter zu sehen sind.
Ich benutze einfach alles, was mir gerade gefällt. Es ist praktisch, nach Lust und Laune zwischen den beiden wechseln zu können!
Wenn Sie Zitatzeichen zitieren, ist ein Wechsel zwischen beiden natürlich doch nicht so skurril ...
Der Geschmack Ihres Teams oder die Codierungsrichtlinien Ihres Projekts.
Wenn Sie sich in einer mehrsprachigen Umgebung befinden, möchten Sie möglicherweise die Verwendung derselben Art von Anführungszeichen für Zeichenfolgen fördern, die beispielsweise in der anderen Sprache verwendet werden. Sonst gefällt mir persönlich das Aussehen von '
Ich möchte sowohl Pixel als auch Überraschungen minimieren. Ich bevorzuge normalerweise, '
um Pixel zu minimieren, aber "
stattdessen, wenn die Zeichenfolge einen Apostroph hat, wieder, um Pixel zu minimieren. Für ein docstring ich aber lieber """
über , '''
weil diese nicht-Standard, ungewöhnlich ist, und daher überraschend. Wenn ich jetzt eine Reihe von Zeichenfolgen habe, die ich "
gemäß der obigen Logik verwendet habe, aber auch eine, die mit einer davonkommen kann, kann '
ich sie trotzdem verwenden "
, um die Konsistenz zu bewahren, nur um Überraschungen zu minimieren.
Vielleicht hilft es, die Philosophie der Pixelminimierung folgendermaßen zu betrachten. Möchten Sie lieber, dass englische Zeichen aussehenA B C
oder AA BB CC
? Die letztere Wahl verschwendet 50% der nicht leeren Pixel.
Ich verwende doppelte Anführungszeichen, weil ich dies seit Jahren in den meisten Sprachen (C ++, Java, VB…) außer Bash mache, weil ich auch doppelte Anführungszeichen in normalem Text verwende und weil ich eine (modifizierte) nicht-englische Tastatur verwende, bei der Für beide Zeichen ist die Umschalttaste 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")
Die Ergebnisse sind die gleichen
= >> nein, sie sind nicht gleich Ein einzelner Backslash entgeht Zeichen. In diesem Beispiel haben Sie einfach Glück, weil \k
und \w
sind keine gültigen Fluchten wie \t
oder \n
oder \\
oder\"
Wenn Sie einzelne Backslashes verwenden möchten (und diese als solche interpretieren lassen möchten), müssen Sie eine "rohe" Zeichenfolge verwenden. Sie können dies tun, indem Sie ein ' r
' vor die Zeichenfolge setzen
im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'
In Bezug auf Pfade in Windows werden Schrägstriche auf die gleiche Weise interpretiert. Die Zeichenfolge selbst ist jedoch eindeutig anders. Ich würde jedoch nicht garantieren, dass sie auf einem externen Gerät so gehandhabt werden.
os.path.join()