Pregunta Comillas simples vs. comillas dobles en Python [cerrado]


De acuerdo con la documentación, son bastante intercambiables. ¿Hay alguna razón estilística para usar una sobre la otra?


718
2017-09-11 08:18


origen


Respuestas:


Me gusta usar comillas dobles para cadenas que se utilizan para interpolación o que son mensajes de lenguaje natural, y comillas simples para cadenas pequeñas tipo símbolo, pero que romperán las reglas si las cadenas contienen comillas o si se me olvida. Uso comillas dobles triples para docstrings y literales de cadena sin formato para expresiones regulares, incluso si no son necesarias.

Por ejemplo:

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

525
2017-09-11 10:06



Citando los documentos oficiales en https://docs.python.org/2.0/ref/strings.html:

En inglés simple: los literales de cadena se pueden encerrar en comillas simples (') o comillas dobles (").

Entonces no hay diferencia En su lugar, la gente le dirá que elija el estilo que coincida con el contexto, y para ser consistente. Y estoy de acuerdo, añadiendo que no tiene sentido tratar de crear "convenciones" para este tipo de cosas, porque solo terminarás confundiendo a los recién llegados.


96
2017-09-27 18:07



Yo solía preferir ', especialmente para '''docstrings''', como yo encuentro """this creates some fluff""". También, ' puede ser escrito sin el Cambio tecla en mi teclado alemán suizo.

Desde entonces he cambiado a usar comillas triples para """docstrings""", conformar a PEP 257.


90
2017-09-11 08:55



Estoy con Will:

  • Comillas dobles para el texto
  • Comillas simples para cualquier cosa que se comporte como un identificador
  • Literales de cadena sin procesar entre comillas dobles para expresiones regulares
  • Triples comillas dobles para docstrings

Me quedaré con eso incluso si eso significa mucho de escapar.

Obtengo el mayor valor de los identificadores de una sola cita que se destacan por las comillas. El resto de las prácticas están ahí solo para darles a esos identificadores únicos de cotizaciones alguna habitación de pie.


44
2017-09-11 10:21



Si la cadena que tiene contiene uno, entonces debe usar el otro. Por ejemplo, "You're able to do this", o 'He said "Hi!"'. Aparte de eso, debe ser tan constante como sea posible (dentro de un módulo, dentro de un paquete, dentro de un proyecto, dentro de una organización).

Si su código va a ser leído por personas que trabajan con C / C ++ (o si cambia entre esos idiomas y Python), entonces use '' para cadenas de un solo carácter, y "" para cuerdas más largas podría ayudar a facilitar la transición. (Del mismo modo para seguir otros idiomas donde no son intercambiables).

El código de Python que he visto en la naturaleza tiende a favorecer " encima ', pero solo levemente La única excepción es que """these""" son mucho más comunes que '''these'''por lo que he visto


26
2017-09-11 08:33



Los comentarios citados en triple son un subtema interesante de esta pregunta. PEP 257 especifica comillas triples para cadenas de texto. Hice una comprobación rápida con Google Code Search y encontré que comillas dobles triples en Python son aproximadamente 10 veces más populares que comillas simples triples - 1.3M vs 131K ocurrencias en el código Google indexes. Entonces, en el caso de líneas múltiples, es probable que su código sea más familiar para las personas si usa comillas dobles triples.


21
2017-07-30 20:35



"If you're going to use apostrophes, 
       ^

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

Por esa sencilla razón, siempre utilizo comillas dobles en el exterior. Siempre

Hablando de pelusas, ¿de qué sirve agilizar los literales de cadenas con 'si vas a tener que usar caracteres de escape para representar apóstrofes? ¿Ofende a los codificadores leer novelas? ¡No me puedo imaginar lo dolorosa clase de inglés de la escuela secundaria para ti!


13
2017-09-22 12:35



Python usa citas como esta:

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

Lo que da el siguiente resultado:

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'

7
2018-01-23 21:45



Utilizo comillas dobles en general, pero no por ninguna razón específica: Probablemente solo por costumbre de Java.

Supongo que también es más probable que desee apóstrofes en una cadena literal en línea que desea comillas dobles.


3
2017-09-11 08:40



Personalmente, me quedo con uno u otro. No importa. Y proporcionar su propio significado para cualquier cita es solo para confundir a otras personas cuando colabora.


3
2017-09-28 03:35