¿Hay alguna forma de crear comentarios de varias líneas en Python?

1271

Recientemente comencé a estudiar Python , pero no pude encontrar cómo implementar comentarios de varias líneas. La mayoría de los idiomas tienen símbolos de comentarios en bloque como

/*

*/

Intenté esto en Python, pero arroja un error, por lo que probablemente esta no sea la forma correcta. ¿Python realmente tiene una función de comentarios de varias líneas?

6
  • 2
    Supongo que al ser un lenguaje interpretado tiene sentido, como en el caso de sh o bash o zsh, que #es la única forma de hacer comentarios. Supongo que facilita la interpretación de los scripts de Python de esta manera. Victor Zamanian 14 de marzo de 2017 a las 16:29
  • 1
    Sé que esta respuesta es antigua, pero la encontré porque tenía la misma pregunta. La respuesta aceptada SÍ funciona, aunque no sé lo suficiente de Python para conocer las complejidades de por qué puede no ser correcto (según ADTC). Brandon Barney 7 de julio de 2017 a las 12:55
  • 5
    @BrandonBarney Déjame explicarte el problema. La respuesta aceptada, que usa '' ', en realidad crea una cadena de varias líneas que no hace nada. Técnicamente, eso no es un comentario. Por ejemplo, puede escribir k = '' 'comentario falso, cadena real' ''. Luego, imprima (k) para ver qué significa ADTC. pinyotae 6 de agosto de 2017 a las 3:13
  • 3
    Eso tiene mucho más sentido ahora. Estoy acostumbrado a vba donde la creación de una cadena no utilizada da como resultado un error. No me di cuenta de que Python simplemente lo ignora. Todavía funciona para depurar y aprender al menos, pero no es una buena práctica para el desarrollo real. Brandon Barney 6 de agosto de 2017 a las 21:20
  • En el código fuente de Python, si rompe una línea larga, el editor la sangra automáticamente para mostrar que la línea discontinua es realmente parte de la línea anterior. ¿Es eso lo que debo hacer si rompo una larga línea de pseudocódigo? alpha_989 31/01/18 a las 18:41
1969

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

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

(Asegúrese de aplicar una sangría '''adecuada al interlineado 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 también es lo que encontrarás en muchos proyectos. Los editores de texto suelen tener un atajo para hacer esto fácilmente.

28
  • 23
    Hm. Puse una enorme cadena de varias líneas en un script de Python test.pysolo para ver. Cuando lo hago import test, test.pycse genera un archivo. Desafortunadamente, el pycarchivo es enorme y contiene toda la cadena como texto sin formato. ¿Estoy malinterpretando algo o este tweet es incorrecto? unutbu 8/10/11 a las 13:18
  • 24
    @unutbu, si era lo único en el archivo, era una cadena de documentos. Ponle un código antes y desaparecerá del pyc. Edité la respuesta y puse "módulo" en la lista de cosas que tienen cadenas de documentos. Petr Viktorin 8/10/11 a las 13:21
  • 37
    No me gustan las cadenas de varias líneas como comentarios. El resaltado de sintaxis los marca como cadenas, no como comentarios. Me gusta usar un editor decente que se ocupe automáticamente de comentar regiones y envolver comentarios de varias líneas mientras escribo. Por supuesto, es cuestión de gustos. Sven Marnach 8/10/11 a las 13:31
  • 64
    Como convención, me resulta útil usarlo """para cadenas de documentos y '''para bloquear comentarios. De esta manera, puede ajustar '''sus cadenas de documentos habituales sin conflictos. Roshambo 18/12/12 a las 20:03
  • 21
    Si bien puede usar cadenas de varias líneas como comentarios de varias líneas, me sorprende que ninguna de estas respuestas se refiera a la subsección PEP 8 que recomienda específicamente la construcción de comentarios de varias líneas a partir de comentarios consecutivos de una sola línea, con #líneas en blanco para distinguir párrafos. . Air 21 de mayo de 2014 a las 19:32
90

Python tiene una sintaxis de cadena / comentario de varias líneas en el sentido de que, a menos que se utilicen como cadenas de documentación, las cadenas de varias líneas no generan códigos de bytes, al igual que los #comentarios prepuestos. De hecho, actúa exactamente como un comentario.

Por otro lado, si dice que este comportamiento debe estar documentado en la documentación oficial para que sea una verdadera sintaxis de comentario, 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). Si no es así, cambie a un editor de texto que sí 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 las regiones seleccionadas, también debería poder desplazar bloques de código hacia la izquierda y la derecha fácilmente, y debería colocar automáticamente el cursor en el nivel de sangría actual cuando presiona Enter. El plegado de código también puede resultar útil.


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

@BSUCSClub Python tip: You can use multi-line strings as multi-line comments. Unless used as docstrings, they generate no code! :-)

10
  • 3
    La cadena entre comillas triples ('' ') de hecho funciona para cumplir con comentarios de varias líneas. Varun Bhatia 24 de junio de 2013 a las 6:53
  • Gracias ... Usé ('' ') y ("" ") para comentar el bloque pero no me ayudó para las aplicaciones de Django. Así que elija IDLE y hay opciones como Comentar fuera de la región y Descomentar regiones (atajo: Alt + 3 y Alt + 4 respectivamente) en el menú Formato . Ahora es más fácil que nunca ..Saurav Kumar 11 de diciembre de 2013 a las 6:53
  • También debería considerar el uso de un IDE. Sí, son pesados, pero si se usan correctamente, realmente pueden aumentar el tiempo de codificación. Yo personalmente solía usar PyDev y ahora uso PTVS (con visual studio). Definitivamente recomendaría PTVS, ya que es muy agradable trabajar con él, ya que contiene las características anteriores junto con muchas más: integración directa con virtualenvs y muy buena depuración, por decir lo menosSbspider 11/04/2014 a las 2:42
  • 2
    @HappyLeapSecond Creo que debería aclararlo diciendo "Python no tiene una verdadera sintaxis de comentarios de varias líneas , pero admite cadenas de varias líneas que se pueden usar como comentarios". ADTC 18/07/2015 a las 10:31
  • 3
    Lo que quiero es una manera fácil de comentar bloques enteros de código durante la prueba. Otros idiomas lo hacen fácil. Python es solo una molestia. Albert Godfrind 26 feb 2016 a las 17:01
57

De la respuesta aceptada ...

You can use triple-quoted strings. When they're not a docstring (first thing in a class/function/module), they are ignored.

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 intenta 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 o ...

ValueError: invalid \x escape

... en Python 2.xo ...

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 son ignorados por el analizador 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()
4
  • Entonces, puede usar r'raw string'- r'\xor' == '\\xor'. GingerPlusPlus 29/06/2016 a las 14:13
  • 2
    Bueno, cualquier comentario "verdadero" de varias líneas también debe ser analizado y sintácticamente válido. Los comentarios de estilo C no pueden contener un */ya que terminará el bloque, por ejemplo. user1919238 27/07/2016 a las 9:31
  • 2
    @ dan1111 es obvio que el comentario no puede incluir el marcador final, pero esa es la única limitación. el.pescado 29 de septiembre de 2016 a las 5:50
  • 15
    '''Los "comentarios" tienen más limitaciones. Solo puede comentar declaraciones completas, mientras que los comentarios pueden comentar partes de la expresión. Ejemplo: En C, puede comentar algunos elementos de la lista: int a[] = {1, 2, /* 3, 4, */ 5};. Con la cadena de varias líneas, no puede hacer eso, ya que eso pondría una cadena dentro de su lista. el.pescado 29 de septiembre de 2016 a las 5:55
38

En Python 2.7, el comentario de varias líneas es:

"""
This is a
multilline comment
"""

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

Por ejemplo:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """
3
  • 23
    las comillas triples son una forma de insertar texto que no hace nada (creo que también podría hacer esto con cadenas de comillas simples regulares), pero no son comentarios: el intérprete realmente ejecuta la línea (pero la línea no no hacer nada). Es por eso que la sangría de un 'comentario' entre comillas triples es importante. Demis 9/06/15 a las 18:35
  • dieciséis
    Esta solución es incorrecta, el weather2comentario es en realidad una cadena de documentos, ya que es lo primero en la clase. Ken Williams 1 de marzo de 2017 a las 19:16
  • De acuerdo con @KenWilliams. Ésta no es una solución correcta. Intente poner esto en medio de una función / clase, y vea cómo arruina su formateo y automatiza el plegado / ligado de código. alpha_989 2 feb 2018 a las 3:47
27

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.

3
  • 3
    esto es incorrecto, vea las respuestas sobre el uso de comillas triples. Fernando Gonzalez Sanchez 23/02/15 a las 16:54
  • 11
    @FernandoGonzalezSanchez: Realmente no es incorrecto. Esta "cadena de varias líneas como comentario" se puede describir mejor como un "consejo profesional". Los documentos oficiales de Python no dicen nada sobre esto, de ahí la pregunta publicada por OP. Sanjay T. Sharma 23/02/15 a las 20:40
  • 8
    Eso es un PEP para cadenas de documentos; no hay una sola mención de "comentario" en esa página. Sanjay T. Sharma 24 feb 2015 a las 10:55
14

Creo que no, excepto que no se procesa una cadena de varias líneas. Sin embargo, la mayoría, si no todos, los IDE de Python tienen una tecla abreviada para "comentar" varias líneas de código.

12

Si pones un comentario en

"""
long comment here
"""

en medio de una secuencia de comandos, Python / linters no lo reconocerá. El plegado se estropeará, ya que el comentario anterior no forma parte de las recomendaciones estándar. Es mejor usar

# Long comment
# here.

Si usa Vim , puede usar complementos como commentary.vim para comentar automáticamente largas líneas de comentarios presionando Vjgcc. Donde Vjselecciona dos líneas de código y las gcccomenta.

Si no desea usar complementos como el anterior, puede usar buscar y reemplazar como

:.,.+1s/^/# /g

Esto reemplazará el primer carácter de la línea actual y la siguiente con #.

0
10

No existe una característica como un comentario de varias líneas. #es la única forma de comentar una sola línea de código. Muchos de ustedes respondieron '' 'un comentario' '' esto como su solución.

Parece funcionar, pero internamente '''en Python toma las líneas encerradas como cadenas regulares que el intérprete no ignora como un comentario usando #.

Consulta la documentación oficial aquí

0
6

Lamentablemente, la cadena de caracteres no siempre se puede utilizar como comentario. Por lo tanto, es más seguro ceñirse al estándar anteponiendo cada línea con un #.

Aquí hay un ejemplo:

test1 = [1, 2, 3, 4,]       # test1 contains 4 integers

test2 = [1, 2, '''3, 4,'''] # test2 contains 2 integers **and the string** '3, 4,'
5

Conmutador de comentarios de varias líneas oficial universal de Visual Studio Code .

macOS: seleccione el bloque de código y luego +/

Windows: seleccione el bloque de código y luego Ctrl+/

5

¡No recomendaría usarlo """para comentarios de varias líneas!

Aquí hay un ejemplo simple para resaltar lo que podría considerarse un comportamiento inesperado:

print('{}\n{}'.format(
    'I am a string',
    """
    Some people consider me a
    multi-line comment, but
    """
    'clearly I am also a string'
    )
)

Ahora eche un vistazo a la salida:

I am a string

    Some people consider me a
    multi-line comment, but
    clearly I am also a string

La cadena de varias líneas no se trató como comentario, pero se concatenó con 'clearly I'm also a string'para formar una sola cadena.

Si desea comentar varias líneas, hágalo de acuerdo con las pautas de PEP 8 :

print('{}\n{}'.format(
    'I am a string',
    # Some people consider me a
    # multi-line comment, but
    'clearly I am also a string'
    )
)

Producción:

I am a string
clearly I am also a string
0
4

Bueno, puede intentar esto (cuando ejecute el citado, la entrada a la primera pregunta debe citarse con '):

"""
print("What's your name? ")
myName = input()
print("It's nice to meet you " + myName)
print("Number of characters is ")
print(len(myName))
age = input("What's your age? ")
print("You will be " + str(int(age)+1) + " next year.")

"""
a = input()
print(a)
print(a*5)

"""Se comentará lo que esté encerrado entre ellos.

Si está buscando comentarios de una sola línea, entonces lo es #.

3

Comentario de varias líneas en Python:

Para mí, tanto '' 'como "" "funcionaron.

Ejemplo:

a = 10
b = 20
c = a+b
'''
print ('hello')
'''
print ('Addition is: ', a+b)

Ejemplo:

a = 10
b = 20
c = a+b
"""
print('hello')
"""
print('Addition is: ', a+b)
3

Los comentarios en línea en Python comienzan con un carácter hash.

hello = "Hello!" # This is an inline comment
print(hello)

Hello!

Tenga en cuenta que un carácter hash dentro de una cadena literal es solo un carácter hash.

dial = "Dial #100 to make an emergency call."
print(dial)

Dial #100 to make an emergency call.

También se puede utilizar un carácter de almohadilla para comentarios de una o varias líneas.

hello = "Hello"
world = "World"
# First print hello
# And print world
print(hello)
print(world)

Hello

World

Incluya el texto entre comillas dobles triples para admitir la cadena de documentos.

def say_hello(name):
    """
    This is docstring comment and
    it's support multi line.
    :param name it's your name
    :type name str
    """
    return "Hello " + name + '!'


print(say_hello("John"))

Hello John!

Incluya el texto entre comillas simples triples para los comentarios en bloque.

'''
I don't care the parameters and
docstrings here.
'''
2

En Python 2.7.13:

Soltero:

"A sample single line comment "

Multilínea:

"""
A sample
multiline comment
on PyCharm
"""
2
  • 2
    ¿Estás diciendo que las comillas simples crean un comentario en Python 2.7? mcalex 9 de julio de 2017 a las 1:59
  • 3
    El uso de un solo conjunto de comillas crea una cadena. Un comentario de una sola línea debe ir precedido de un #. johanno 22 de septiembre de 2017 a las 20:43
2

Usando PyCharm IDE.

You can comment and uncomment lines of code using Ctrl+/. Ctrl+/ comments or uncomments the current line or several selected lines with single line comments ({# in Django templates, or # in Python scripts). Pressing Ctrl+Shift+/ for a selected block of source code in a Django template surrounds the block with {% comment %} and {% endcomment %} tags.


n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)

print("Loop ended.")

Seleccione todas las líneas y luego presione Ctrl + /


# n = 5
# while n > 0:
#     n -= 1
#     if n == 2:
#         break
#     print(n)

# print("Loop ended.")
2

Sí, está bien usar ambos:

'''
Comments
'''

y

"""
Comments
"""

Pero, lo único que todos deben recordar mientras se ejecutan en un IDE es que deben "EJECUTAR" todo el archivo para que se acepte como códigos de varias líneas. Línea por línea 'RUN' no funcionará correctamente y mostrará un error.

1

Para comentar varias líneas de código en Python es simplemente usar un #comentario de una sola línea en cada línea:

# This is comment 1
# This is comment 2 
# This is comment 3

Para escribir comentarios “adecuados” de varias líneas en Python es utilizar cadenas de varias líneas con la """sintaxis que Python tiene la característica de cadenas de documentación (o cadenas de documentos). Brinda a los programadores una manera fácil de agregar notas rápidas con cada módulo, función, clase y método de Python.

'''
This is
multiline
comment
'''

Además, mencione que puede acceder a la cadena de documentos mediante un objeto de clase como este

myobj.__doc__
2
  • ¿Qué agrega esto sobre las respuestas anteriores? Peter Mortensen 3 feb.20 a las 17:34
  • Mi respuesta contiene más detalles, lo que puede ayudar más al desarrollador. shafik 4 feb.20 a las 3:06
1

Entre otras respuestas, encuentro que la forma más fácil es usar las funciones de comentarios IDE que usan el soporte de comentarios de Python de #.

Estoy usando Anaconda Spyder y tiene:

  • Ctrl+ 1- Comentar / descomentar
  • Ctrl+ 4- Comentar un bloque de código
  • Ctrl+ 5- Descomentar un bloque de código

Comentaría / descomentaría una sola línea o varias líneas de código con #.

Lo encuentro más fácil.

Por ejemplo, un comentario de bloque:

# =============================================================================
#     Sample Commented code in spyder
#  Hello, World!
# =============================================================================
0
1

Si escribe un comentario en una línea con un código, debe escribir un comentario, dejando 2 espacios antes del signo # y 1 espacio antes del signo #

print("Hello World")  # printing

Si escribe un comentario en una nueva línea, debe escribir un comentario, dejando 1 espacio kn en el signo #

# single line comment

Para escribir comentarios de más de 1 línea, use 3 comillas

"""
This is a comment
written in
more than just one line
"""
1
0

En realidad, un comentario de varias líneas no existe en Python. El siguiente ejemplo consta de una cadena sin asignar, que Python valida para detectar errores sintácticos.

Algunos editores de texto, como Notepad ++ , nos proporcionan atajos para comentar un fragmento de código o palabras escritas.

def foo():
    "This is a doc string."
    # A single line comment
    """
       This
       is a multiline
       comment/String
    """
    """
    print "This is a sample foo function"
    print "This function has no arguments"
    """
    return True

Además, Ctrl+ Kes un atajo en Notepad ++ para bloquear comentarios. Agrega un #delante de cada línea debajo de la selección. Ctrl+ Shift+ Kes para descomentar en bloque.

0
0

Seleccione las líneas que desea comentar y luego use Ctrl+ ?para comentar o descomentar el código Python en el editor de Sublime Text .

Para una sola línea, puede usar Shift+ #.

0

Puede utilizar lo siguiente. Esto se llama DockString.

def my_function(arg1):
    """
    Summary line.
    Extended description of function.
    Parameters:
    arg1 (int): Description of arg1
    Returns:
    int: Description of return value
    """
    return arg1

print my_function.__doc__
2
-1

En Python, puede usar comentarios de varias líneas fácilmente siguiendo estos pasos

Puede usar esta cadena de documentación para comentarios de varias líneas en Python.

"" "imprimir (" el resultado es verdadero ")

"" "

1
  • Esto ya se ha explicado en las otras respuestas. Lea siempre las otras respuestas antes de publicar; debe evitar repetir la información disponible. Gracias. Eric Aya 9 de agosto a las 13:57