¿Comillas dobles o simples?



Habrás notado que el lenguaje soporta el uso de ambos glifos para indicar cadenas de caracteres:

a = "Recursos Python"
b = 'Recursos Python'

A diferencia de otros, en Python ambas expresiones tienen el mismo significado, el intérprete simplemente no distingue entre una u otra convención. La única condición es ser consistente dentro de una misma cadena. Por ejemplo, la siguiente asignación es inválida:

c = 'Recursos Python"

Pues si la cadena ha comenzado con una comilla simple, debe terminar con ésta, y vice-versa.

Si eres curioso y te preocupas por la estética de tu código te habrás preguntado: ¿qué método debería adoptar? Si tienes prisa la respuesta rápida es: el que tú quieras. Si quieres cononcer un poco más, te invito a que sigas leyendo.

Uno de los aforismos favoritos en el mundo de Python indica que “debería haber una (y preferiblemente solo una) forma obvia de hacerlo”. Este caso es la excepción a la regla.

Cuando se trata de convenciones, en general el lenguaje ofrece un abanico de posibilidades, pero muchas de ellas están específicamente indicadas en documentos como la guía de estilo para el código Python (PEP 8). Lo curioso es que ninguna documentación oficial de Python pretende que optemos por una solución u otra respecto del uso de comillas simples o dobles.

La única aclaración llega de la mano de los docstrings, aquellos textos destinados a documentar una función, clase o módulo. Según la documentación oficial, siempre deben utilizar tres comillas dobles.

def f(s):
    """Imprime el mensaje en pantalla."""
    print(s)

Sin desanimarnos y en busca de una aclaración, podemos inverstigar el código de fuente de la librería estándar del lenguaje (dentro de la carpeta Lib en el directorio de isntalación de Python). Pero como si no fuera suficiente, esta colección de módulos es un verdadero popurrí de convenciones. Algunos archivos emplean comillas simples íntegramente, otros comillas dobles, y tantos otros simplemente combinan ambos estilos indistintamente y sin razón alguna.

Incluso la documentación oficial, en sus vastos ejemplos, procede a desorientarnos considerando aleatoriamente la utilización de un estilo sobre el otro.

Habría de concluir, entonces, que los bandos están lo suficientemente dispersos en la comunidad de programadores del lenguaje como para sentirnos libres de elegir la forma que más nos plazca. No obstante ello procedo a darte algunos consejos.

Algunos desarrolladores típicamente emplean un sistema consistente en colocar comillas dobles para mensajes, textos, oraciones, y similares; y comillas simples para el resto o aquellas pequeñas cadenas que actúan como un identificador. Por ejemplo:

>>> a = "Recursos Python"
>>> b = {'Item 1': 1}

Trataré de convencerte de que esta es una muy mala práctica. Si algo hemos aprendido sobre los estilos en el diseño del código es que lo más importante es ser consistente. Simplemente carece de sentido hacer tal distinción, y lejos de mejorar la legibilidad hace parecer al código poco ordenado. Será muy poco práctico para tí y tus colaboladores tener que recordar cuándo optar por un estilo u otro, generará confusiones y olvidos en la mayoría de los casos.

En su lugar, confórmate con elegir la convención que más te guste y mantenla siempre igual cuando se trate de un mismo proyecto. Mezclar dos estilos dentro de un mismo conjunto de código no otorga una buena impresión.

Es aceptable, sin embargo, “quebrar” tu convención cuando tengas que incluir comillas dentro de una cadena. Por ejemplo, si tu estilo consta de utilizar comillas dobles pero debes escribir un texto que las contiene, entonces estará bien realizar el cambio:

a = '¡Bienvenidos a "Recursos Python"!'

De esta forma la legibilidad se mantiene, contrariamente a la alternativa, utilizando la secuencia de escape (la barra invertida):

>>> a = "¡Bienvenidos a \"Recursos Python\"!"

En lo personal, como verás en la mayoría de los artículos del sitio, opto por el estilo de las comillas dobles. Aquí hay algunas razones por las que hago esta elección:

  • Costumbre: habiendo utilizado otros lenguajes con anterioridad a Python, como C y Visual Basic, mi cerebro ha asociado las comillas dobles con las cadenas de caracteres con suficiente intensidad como para no dejar de hacerlo.
  • Intuición: considero mucho más intuitivo el uso de comillas dobles. Mantiene homogeneidad con el castellano y los idiomas con raíces latinas. Al leer un escrito, estamos acostumbrados a encontrar frases, párrafos o textos enteros entre comillas dobles.
  • Otros lenguajes, como comentaba al comienzo, tratan de forma diferente a los textos encerrados entre comillas simples. Por ejemplo, en C la expresión 'a' no representa una cadena de caracteres sino un entero, el número 97 (correspondiente al código ASCII de la letra “a”). Esto podría generar confusiones para aquellos usuarios que se introducen en el mundo de Python.

Esta lista no tiene como objetivo convencer al lector, es más, tal vez en un futuro cambie de parecer. Pero por el momento, me mantengo a gusto con las comillas dobles.



Deja un comentario