Single Quotes versus Double Quotes in Python

Volgens de documentatie is ze vrijwel onderwisselend. Is er een stilistische reden om de ene in de andere te gebruiken?


Antwoord 1, Autoriteit 100%

Ik hou van dubbele aanhalingstekens rond de snaren die worden gebruikt voor interpolatie of die natuurlijke taalberichten zijn, en enkele aanhalingstekens voor kleine symbool-achtige snaren, maar de regels doorbreken als de snaren citaten bevatten, of als ik het vergeet. Ik gebruik drievoudige dubbele aanhalingstekens voor docstrings en rauwe string-letterlijk voor reguliere uitdrukkingen, zelfs als ze niet nodig zijn.

Bijvoorbeeld:

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

Antwoord 2, Autoriteit 18%

Citeren van de officiële documenten bij https://docs.python.org/2.0/ref /strings.html :

In gewoon Engels: string-literalen kunnen worden ingesloten bij het matchen van afzonderlijke aanhalingstekens (‘) of dubbele aanhalingstekens (“).

Dus er is geen verschil. In plaats daarvan vertellen mensen u om te kiezen welke stijl die overeenkomt met de context, en consistent . En ik ben het ermee eens – eraan toevoegend dat het zinloos is om te proberen “conventies” te bedenken voor dit soort ding omdat je alleen maar in verwarring bent van nieuwe nieuwkomers.


Antwoord 3, Autoriteit 17%

Vroeger gaf ik de voorkeur aan ', vooral voor '''docstrings''', omdat ik vind dat """this creates some fluff""". Ook kan 'worden getypt zonder de Shift-toets op mijn Zwitsers-Duitse toetsenbord.

Sindsdien ben ik overgestapt op het gebruik van drievoudige aanhalingstekens voor """docstrings""", om te voldoen aan PEP 257.


Antwoord 4, autoriteit 8%

Ik ben met Will:

  • Dubbele aanhalingstekens voor tekst
  • Enkele aanhalingstekens voor alles dat zich als een identificatie gedraagt
  • Dubbele aanhalingstekens van onbewerkte tekenreeksen voor regexps
  • Driedubbele aanhalingstekens voor docstrings

Ik zal me daaraan houden, ook al betekent dat veel ontsnappen.

Ik haal de meeste waarde uit ID’s met enkele aanhalingstekens die opvallen door de aanhalingstekens. De rest van de praktijken zijn er alleen om die enkele geciteerde identifiers wat sta-ruimte te geven.


Antwoord 5, autoriteit 5%

Als de string die je hebt er een bevat, moet je de andere gebruiken. Bijvoorbeeld "You're able to do this", of 'He said "Hi!"'. Verder moet je gewoon zo consistent mogelijk zijn (binnen een module, binnen een pakket, binnen een project, binnen een organisatie).

Als je code wordt gelezen door mensen die met C/C++ werken (of als je schakelt tussen die talen en Python), gebruik dan ''voor tekenreeksen van één teken, en ""voor langere tekenreeksen kan de overgang vergemakkelijken. (Ook voor het volgen van andere talen waar ze niet uitwisselbaar zijn).

De Python-code die ik in het wild heb gezien, geeft de voorkeur aan "boven ', maar slechts in geringe mate. De enige uitzondering is dat """these"""komen veel vaker voor dan '''these''', van wat ik heb gezien.


Antwoord 6, autoriteit 4%

Drievoudig geciteerde opmerkingen zijn een interessant subonderwerp van deze vraag. PEP 257 specificeert drievoudige aanhalingstekens voor doc-tekenreeksen. Ik heb een snelle controle uitgevoerd met Google Code Search en ontdekte dat driedubbele dubbele aanhalingstekens in Pythonzijn ongeveer 10x zo populair als drievoudige enkele aanhalingstekens— 1,3 miljoen vs. 131K voorvallen in de code die Google indexeert. Dus in het geval van meerdere regels zal je code waarschijnlijk meer bekend zijn bij mensen als er driedubbele dubbele aanhalingstekens worden gebruikt.


Antwoord 7, autoriteit 2%

"If you're going to use apostrophes, 
       ^
you'll definitely want to use double quotes".
   ^

Om die simpele reden gebruik ik altijd dubbele aanhalingstekens aan de buitenkant. Altijd

Over pluis gesproken, wat heb je eraan om je letterlijke tekenreeksen met ‘ te stroomlijnen als je escape-tekens moet gebruiken om apostrofs weer te geven? Is het een belediging voor programmeurs om romans te lezen? Ik kan me niet voorstellen hoe pijnlijk de Engelse les op de middelbare school voor je was!


Antwoord 8

Python gebruikt aanhalingstekens als volgt:

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

Wat de volgende output geeft:

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'

Antwoord 9

Ik gebruik in het algemeen dubbele aanhalingstekens, maar niet om een specifieke reden – waarschijnlijk gewoon uit gewoonte van Java.

Ik denk dat je ook eerder apostrofs wilt in een inline letterlijke tekenreeks dan dat je dubbele aanhalingstekens wilt.


Antwoord 10

Persoonlijk blijf ik bij het een of het ander. Het maakt niet uit. En je eigen betekenis aan beide citaten geven, is alleen maar om andere mensen in verwarring te brengen wanneer je samenwerkt.


Antwoord 11

Het is waarschijnlijk meer een stilistische voorkeur dan wat dan ook. Ik heb zojuist PEP 8 gecontroleerd en zag geen enkele of dubbele aanhalingstekens.

Ik geef de voorkeur aan enkele aanhalingstekens omdat het maar één toetsaanslag is in plaats van twee. Dat wil zeggen, ik hoef de shift-toets niet te pureren om een enkel aanhalingsteken te maken.


Antwoord 12

In Perl wil je enkele aanhalingstekens gebruiken als je een string hebt die geen variabelen of escapetekens zoals \n, \t, \r, enz. hoeft te interpoleren.

PHP maakt hetzelfde onderscheid als Perl: inhoud tussen enkele aanhalingstekens wordt niet geïnterpreteerd (zelfs \n wordt niet geconverteerd), in tegenstelling tot dubbele aanhalingstekens die variabelen kunnen bevatten waarvan de waarde wordt afgedrukt.

Python niet, vrees ik. Technisch gezien is er geen $ token (of iets dergelijks) om een naam/tekst te scheiden van een variabele in Python. Beide functies maken Python immers beter leesbaar, minder verwarrend. Enkele en dubbele aanhalingstekens kunnen in Python door elkaar worden gebruikt.


Antwoord 13

Ik heb ervoor gekozen dubbele aanhalingstekens te gebruiken omdat ze gemakkelijker te zien zijn.


Antwoord 14

Ik gebruik gewoon wat ik op dat moment leuk vind; het is handig om in een opwelling tussen de twee te kunnen schakelen!

Natuurlijk, bij het citeren van aanhalingstekens, is het schakelen tussen de twee misschien niet zo grillig…


Antwoord 15

De smaak van uw team of de coderingsrichtlijnen van uw project.

Als u zich in een meertalige omgeving bevindt, wilt u misschien het gebruik van hetzelfde type aanhalingstekens voor strings aanmoedigen als bijvoorbeeld de andere taal. Anders vind ik persoonlijk het uiterlijk het mooist van ‘


Antwoord 16

Geen voor zover ik weet. Hoewel, als je naar een code kijkt, ” ” vaak wordt gebruikt voor tekstreeksen (ik denk dat ‘ komt vaker voor in tekst dan “), en ‘ ‘ verschijnt in hashkeys en dergelijke.


Antwoord 17

Ik streef ernaar om zowel pixels als verrassingen te minimaliseren. Ik geef meestal de voorkeur aan 'om pixels te minimaliseren, maar "in plaats daarvan als de tekenreeks een apostrof heeft, nogmaals om pixels te minimaliseren. Voor een docstring geef ik echter de voorkeur aan """over '''omdat de laatste niet-standaard, ongebruikelijk en daarom verrassend is. Als ik nu een aantal strings heb waar ik "heb gebruikt volgens de bovenstaande logica, maar ook een die weg kan komen met een ', kan ik nog steeds "erin om de consistentie te behouden, alleen om verrassingen te minimaliseren.

Misschien helpt het om op de volgende manier aan de pixelminimalisatiefilosofie te denken. Wilt u liever dat Engelse personages eruitzagen als A B Cof AA BB CC? De laatste keuze verspilt 50% van de niet-lege pixels.


Antwoord 18

Ik gebruik dubbele aanhalingstekens omdat ik al jaren in de meeste talen heb gedaan (C++, Java, VB …) behalve bash, omdat ik ook dubbele aanhalingstekens in normale tekst gebruik en omdat ik een (gewijzigde) niet- Engels toetsenbord waar beide tekens de Shift-toets vereisen.


Antwoord 19

'= "

/= \= \\

Voorbeeld:

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

De resultaten zijn hetzelfde

= & gt; & gt; Nee, ze zijn niet hetzelfde.
Een enkele backslash zal ontsnappen aan personages. Je toevallig toevallig geluk in dat voorbeeld omdat \ken \wgeen geldige ontsnappingen zijn zoals \tof \nof \\of \"

Als u afzonderlijke backslashes wilt gebruiken (en deze als zodanig geïnterpreteerd hebben), moet u een “RAW” -tekenring gebruiken. U kunt dit doen door een ‘r‘ voor de string

te plaatsen

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

Wat betreft paden in Windows, worden de schuine strepen op dezelfde manier geïnterpreteerd. Het is duidelijk dat de string zelf anders is. Ik zou niet garanderen dat ze op deze manier op een extern apparaat worden behandeld.

Other episodes