No uses triples comillas como comentarios

No uses triples comillas como comentarios

En Python la única forma de crear comentarios es usando el símbolo # (numeral). E insisto en que no hay otra. La proposición según la cual las triples comillas operan también como comentarios es falsa.

# Esto es un comentario.
a = 1

"""¡¡¡Error!!! Esto no es un comentario."""
b = 2

La confusión radica en que las triples comillas suelen emplearse para crear la documentación de una función. Por ejemplo:

def add(a, b):
    """
    Retorna el resultado de a + b.
    """
    return a + b

Luego, esa documentación, conocida también como docstring, se almacena en el atributo add.__doc__ y es accedida por la función help().

print(add.__doc__)
help(add)

No obstante, la realidad es que en una función la primera cadena literal que se encuentra es interpretada por Python como la documentación, sin importar si se usan triples comillas o un par de comillas dobles o simples.

# Ambas documentaciones son válidas.
def add(a, b):
    "Retorna el resultado de a + b."
    return a + b

def div(a, b):
    'Retorna el resultado de a / b.'
    return a / b

Esto funciona porque en Python es válido crear expresiones cuyo resultado no es utlilizado para nada (por ejemplo, para asignarlo a una variable o pasarlo como argumento a una función). El siguiente código no arroja ningún error:

7 + 5
"Hola mundo"
"""Esto es una cadena."""
15 / 3

Ahora bien, eso es exactamente lo que estamos haciendo cuando creamos un «comentario» usando triples comillas: generando una cadena que luego es desechada por Python por no ser empleada.

Pero el problema se origina cuando esas cadenas, creyendo ser comentarios, son ubicadas en lugares donde se espera una expresión. Por ejemplo:

languages = [
    """Lenguajes y los años en que fueron creados."""
    ("Python", 1991),
    ("Java", 1996),
    ("C++", 1983),
    ("Elixir", 2011)
]

Esto arroja el siguiente error:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    ("Python", 1991),
TypeError: 'str' object is not callable

El error indica que estamos intentando llamar a una cadena como si fuese una función. En efecto, no hay ninguna diferencia con esto:

"Lenguajes y los años en que fueron creados."("Python", 1991)

Quienes se están iniciando en el lenguaje quedan atónitos por un error tan extraño. Y todo eso por pensar que las cadenas funcionan como comentarios. La forma correcta, como ya sabemos, es esta:

languages = [
    # Lenguajes y los años en que fueron creados.
    ("Python", 1991),
    ("Java", 1996),
    ("C++", 1983),
    ("Elixir", 2011)
]

Curso online 👨‍💻

¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

Consultoría 💡

Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

6 comentarios.

  1. Miguel Perez says:

    Que clase de desequilibrado pondría un comentario (con # o con triple comilla) justo al abrir los corchetes de una lista?

    • Recursos Python says:

      Hola Miguel. No necesariamente tiene que ser al inicio de la lista (de hecho en cualquier lugar donde se espere una expresión), y es algo sumamente común cuando se crea una colección con muchos valores iniciales que requieren la explicación de un comentario.

    • Un simple ejemplo: manejando centenares de cuentas contables con ciertas características dentro de listas acostumbramos incluir comentarios entre los valores permitiendo agrupar por algún criterio que dará más información al colega que deba tomar el programa para mantenimiento. Cuando hay páginas y páginas de valores, es bueno incluir comentarios para recordar qué estamos viendo.

  2. """Lenguajes y los años en que fueron creados."""
    languages = [
    # No entiendo porqué poner el aquí...
    ("Python", 1991),
    ("Java", 1996),
    ("C++", 1983),
    ("Elixir", 2011)
    ]

    • Recursos Python says:

      La cadena en ese ejemplo está puesto intencionalmente allí donde se espera una expresión, para mostrar que no es un comentario en absoluto y puede llevar a errores difíciles de detectar para quienes recién están comenzando con el lenguaje, todo a raíz de considerar ─erróneamente─ las triples comillas como comentarios.

  3. Vaya! que es muy interesante.
    ni siquiera sabia que se podía hacer algo así con python

    bueno un ejemplo mas a mi biblioteca python.

    Se agradece.

Deja una respuesta