Comillas simples vs comillas dobles [cerrado]

79

Acabo de comenzar un trabajo en el que estoy escribiendo Python después de provenir de un fondo Java, y me doy cuenta de que otros desarrolladores tienden a citar cadenas usando comillas simples ( '') en lugar de comillas dobles ( ""). Por ejemplo:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

¿Hay alguna razón particular para esto que no sea la preferencia personal? ¿Es esta la forma correcta de estar citando cadenas? Específicamente, lo que quiero saber es si hay algún tipo de práctica recomendada estándar o aceptada que impulse este estilo de codificación.

Eric Hydrick
fuente
55
Si alguna vez entras Ruby, en realidad hay una diferencia técnica entre comillas simples y dobles. Las comillas dobles admiten la interpolación de cadenas: las comillas simples se analizan como literales.
KChaloux
55
Lo mismo es cierto para Perl y la mayoría de los proyectiles.
Blrfl
18
¿Cómo es que esta pregunta "no es constructiva"? Como principiante absoluto en python, necesito saber esto. Si escribes un script bash, hay una gran diferencia.
Magicsowon
19
¿No es constructivo? Geez El primer resultado de Google para "comillas dobles simples de Python", le dice lo que necesita saber rápidamente. Gracias por preguntarle a Eric y responder de manera desviada
aggieNick02

Respuestas:

65

Las otras respuestas son correctas, ya que no hace ninguna diferencia técnica, pero he visto una regla de estilo informal en un par de proyectos de código abierto: las comillas dobles se usan para cadenas que eventualmente pueden ser visibles para el usuario (ya sea que lo necesiten o no) traducción), y las comillas simples son para cadenas que se relacionan con la funcionalidad del código en sí (p. ej., claves dictadas, expresiones regulares, SQL).

Ciertamente, esta no es una regla universal (o incluso codificada en una PEP), por lo que, como cualquier otro aspecto arbitrario de la codificación, se reduce a las reglas locales.

Tenga en cuenta que PEP 8 (que no había notado cuando escribí esta respuesta) dice :

Este PEP no hace una recomendación para esto. Elige una regla y cúmplela. Sin embargo, cuando una cadena contiene comillas simples o dobles, use la otra para evitar las barras invertidas en la cadena. Mejora la legibilidad.

Como señala un comentarista, esto no es necesariamente contradictorio, dependiendo de cómo interprete la "regla". Sin embargo, lo que sugiero no funciona realmente con la segunda mitad de la cita.

desviarse
fuente
1
Este puede ser el estilo de la casa, pero está en contra de PEP 8: elija uno y úselo para todo el archivo, independientemente del contenido.
Nils von Barth
44
@NilsvonBarth El PEP dice "elige una regla y síguela", no "elige un personaje delimitador y síguelo". "Las comillas dobles para el texto visible por el usuario, las comillas simples para las cosas utilizadas por la máquina" parece una regla perfectamente adecuada para cumplir.
Tanner Swett
1
@ Tanner Swett Lo siento, tienes razón; es la guía de estilo de Google Python que especifica "dentro de un archivo" google.github.io/styleguide/pyguide.html#310-strings
Nils von Barth
El negro en realidad formatea cadenas de Python para que estén entre comillas dobles. Incluso jslint quiere que las cadenas JavaSciprt estén entre comillas dobles. La mayoría de los idiomas más antiguos nunca proporcionaron opciones. Solo porque puedes hacerlo no significa que debas hacerlo. Por supuesto, hay algunos casos en los que esto es algo muy bueno, como cuando tienes una cita en la cadena. Sin embargo, en términos prácticos, la mayoría de sus cadenas deben provenir de un conjunto de datos que no esté codificado en su base de código.
Bobort
1
@bobort Incluso si está buscando cadenas en un sistema de traducción o interfaz de usuario, a menudo todavía necesita claves de cadena para las que están en su código. Pero estoy de acuerdo en que las cosas han avanzado, y esta distinción no tiene ningún beneficio.
detly
21

Es muy simple:

  • Las comillas simples permiten la inserción sin escape de comillas dobles.
  • Las comillas dobles permiten incrustar comillas simples sin escape.

Es más Pythonic usar '(comillas simples) hasta que necesite comillas dobles.

La siguiente cita es directamente de la documentación sobre literales de cadena.

están disponibles en cadenas Unicode. Un prefijo de 'b' o 'B' se ignora en Python 2; indica que el literal debería convertirse en un literal de bytes en Python 3 (por ejemplo, cuando el código se convierte automáticamente con 2to3). Un prefijo 'u' o 'b' puede ir seguido de un prefijo 'r'.

En las cadenas entre comillas triples, se permiten (y se retienen) las nuevas líneas y comillas sin escape, excepto que tres comillas sin escapar en una fila terminan la cadena. (Una "cita" es el carácter utilizado para abrir la cadena, es decir, 'o ".)


fuente
15
La pregunta, por supuesto, es: ¿por qué es Pythonic preferir las comillas simples cuando casi todos los demás idiomas usan comillas dobles?
Martin Beckett
13
@MartinBeckett porque
3
Ahh, por supuesto ;-)
Martin Beckett
66
@JarrodRoberson: Creo que "porque" (o 'porque', si lo desea) es una respuesta válida si está escrito en algún PEP (o similar) que es la forma pitónica . De lo contrario, es solo una elección personal.
Joachim Sauer
55
las comillas simples se ven más limpias y tampoco necesitan una tecla Mayús para escribir
JoelFan
17

Desde una perspectiva técnica, no hay diferencia, desde una perspectiva de estilo, algunos pensamientos:

  • La mayoría de los otros lenguajes de programación usan comillas dobles.
  • Cuando se escribe en inglés, generalmente se utilizan comillas dobles.
  • Las comillas simples son útiles cuando tiene mucho texto no técnico / narrativo en su aplicación porque le permiten usar comillas dobles de una manera más natural. bar = '"It\'s awesome" he said.'
  • Por otro lado, el carácter de comillas simples también se usa en algunas ocasiones en inglés. bar = "\"It's awesome\" he said."
API-Bestia
fuente
Tenga en cuenta que "a menudo se usa en cadenas técnicas, también -e, g f 'usted envió" {dumb_thing}, ¡pero eso es demasiado tonto incluso para nosotros!'
Christian Sauer
4

No hay diferencia entre usar comillas simples y comillas dobles en Python. En términos prácticos, dependiendo del tipo de datos con los que esté trabajando, puede encontrar uno u otro estilo más conveniente.

El tipo de citas usadas "por defecto" (donde no hay una razón convincente para usar una u otra) es más bien una cuestión de preferencia personal.

Para obtener más información, consulte la sección sobre Literales de cadena en la documentación de Python.

Greg Hewgill
fuente
4

Algunas cosas a tener en cuenta al desarrollar su hábito de usar comillas simples o dobles con regularidad.

Las comillas dobles requieren dos dedos; y, por lo tanto, es más probable que se produzcan errores de escritura y una disminución de la velocidad

Su editor puede mostrar un personaje mejor que otro; para una depuración de sintaxis visual más fácil.

Las cadenas de documentos usan caracteres triples: ¿cuál se ve mejor? "" "" "" o '' '' ''

Aunque no he visto esto en el sistema operativo Windows, algunas herramientas de sintaxis o documentación pueden esperar comillas simples de doble verso.

Para la mayoría de los tutoriales de Python que he visto, veo lo contrario de tu experiencia. Por lo general, veo comillas dobles utilizadas.

DevPlayer
fuente
4

En mi opinión, prefiero usar las comillas dobles para una cadena.

¿Por qué? Para los programadores de otros lenguajes se pueden adaptar rápidamente y comprender el código más fácilmente.

Si un programador C ve:

'Writing "It\'s big?" No.'

Vaciló, en lugar de:

"Writing \"It's big?\" No."
Lucio
fuente
3
"Escribir \" ¿Es grande? \ "No."
API-Beast
@Lucio Eso es lo que he estado haciendo, simplemente no sabía si estaba violando algún tipo de estándar Python establecido o no.
Eric Hydrick el
@EricHydrick No, puedes elegir uno u otro.
Lucio