¿Cómo creo comentarios multilínea en Python?

Resuelto Dungeon Hunter asked hace 12 años • 27 respuestas

¿Cómo hago comentarios de varias líneas? La mayoría de los idiomas tienen símbolos de bloqueo de comentarios como:

/*

*/
Dungeon Hunter avatar Oct 08 '11 19:10 Dungeon Hunter
Aceptado

Puede utilizar cadenas entre comillas triples. Cuando no son una cadena de documentación (lo primero en una clase/función/módulo), se ignoran.

'''
This is a multiline
comment.
'''

(Asegúrese de aplicar la sangría '''adecuada al inicio para evitar un IndentationError.)

Guido van Rossum (creador de Python) tuiteó esto como un "consejo profesional".

Sin embargo, la guía de estilo de Python, PEP8, favorece el uso de comentarios consecutivos de una sola línea , como este:

# This is a multiline
# comment.

...y esto es también lo que encontrarás en muchos proyectos. Los editores de texto suelen tener un atajo para hacer esto fácilmente.

Petr Viktorin avatar Oct 08 '2011 12:10 Petr Viktorin

Python tiene una sintaxis de cadena/comentario multilínea en el sentido de que, a menos que se usen como cadenas de documentos, las cadenas multilínea no generan código de bytes , al igual que #los comentarios antepuestos. De hecho, actúa exactamente como un comentario.

Por otro lado, si dice que este comportamiento debe documentarse en la documentación oficial para que sea una sintaxis de comentario verdadera, entonces sí, tendría razón al decir que no está garantizado como parte de la especificación del lenguaje.

En cualquier caso, su editor de texto también debería poder comentar fácilmente una región seleccionada (colocando un #delante de cada línea individualmente). De lo contrario, cambie a un editor de texto que lo haga.

Programar en Python sin ciertas funciones de edición de texto puede ser una experiencia dolorosa. Encontrar el editor adecuado (y saber cómo usarlo) puede marcar una gran diferencia en cómo se percibe la experiencia de programación en Python.

El editor de texto no solo debería poder comentar regiones seleccionadas, sino que también debería poder desplazar bloques de código hacia la izquierda y hacia la derecha fácilmente, y debería colocar automáticamente el cursor en el nivel de sangría actual cuando presione Enter. El plegado de código también puede resultar útil.


Para protegerse contra la caída del enlace, aquí está el contenido del tweet de Guido van Rossum :

@BSUCSClub Consejo de Python: puede utilizar cadenas de varias líneas como comentarios de varias líneas. A menos que se utilicen como cadenas de documentación, ¡no generan código! :-)

unutbu avatar Oct 08 '2011 12:10 unutbu

De la respuesta aceptada...

Puede utilizar cadenas entre comillas triples. Cuando no son una cadena de documentación (lo primero en una clase/función/módulo), se ignoran.

Esto simplemente no es cierto. A diferencia de los comentarios, las cadenas entre comillas triples todavía se analizan y deben ser sintácticamente válidas, independientemente de dónde aparezcan en el código fuente.

Si intentas ejecutar este código...

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

Obtendrás cualquiera...

ValueError: invalid \x escape

...en Python 2.x o...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

...en Python 3.x.

La única forma de hacer comentarios de varias líneas que el analizador ignora es...

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()
Aya avatar Jun 29 '2016 13:06 Aya

En Python 2.7 el comentario multilínea es:

"""
This is a
multilline comment
"""

En caso de que estés dentro de una clase, debes tabularla correctamente.

Por ejemplo:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """
SomeAnonymousPerson avatar Feb 16 '2015 14:02 SomeAnonymousPerson

AFAIK, Python no tiene comentarios de bloque. Para comentar líneas individuales, puede utilizar el #carácter.

Si está utilizando Notepad++ , hay un atajo para bloquear comentarios . Estoy seguro de que otros como gVim y Emacs tienen características similares.

Sanjay T. Sharma avatar Oct 08 '2011 12:10 Sanjay T. Sharma