¿Por qué Python no tiene comentarios multilínea?

De acuerdo, soy consciente de que las cadenas de comillas triples pueden servir como comentarios de varias líneas. Por ejemplo,

"""Hello, I am a multiline comment""" 

y

 '''Hello, I am a multiline comment''' 

Pero técnicamente hablando estas son cadenas, ¿correcto?

Busqué en Google y leí la guía de estilo de Python, pero no pude encontrar una respuesta técnica a por qué no hay una implementación formal de multilínea, / * * / tipo de comentarios. No tengo ningún problema al usar comillas triples, pero tengo un poco de curiosidad por lo que llevó a esta decisión de diseño.

Dudo que reciba una respuesta mejor que “Guido no sintió la necesidad de comentarios de varias líneas”.

Guido ha twitteado sobre esto:

Sugerencia de Python: Puede usar 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! 🙂

Los comentarios multilínea son fácilmente rompibles. ¿Qué pasa si tiene lo siguiente en un progtwig de calculadora simple?

 operation = '' print("Pick an operation: +-*/") # Get user input here 

Intenta comentar eso con un comentario de varias líneas:

 /* operation = '' print("Pick an operation: +-*/") # Get user input here */ 

Vaya, tu cadena contiene el delimitador de comentario final.

El texto entre comillas triples NO debe considerarse comentarios de varias líneas; Por convención, son cadenas de documentación . Deben describir qué hace su código y cómo usarlo, pero no para cosas como comentar bloques de código.

Según Guido, los comentarios multilínea en Python son solo comentarios contiguos de una línea (búsqueda de “comentarios de bloque”).

Para comentar bloques de código, a veces uso el siguiente patrón:

 if False: # A bunch of code 

Esto probablemente se remonta al concepto central de que debería haber una forma obvia de realizar una tarea. Los estilos de comentarios adicionales agregan complicaciones innecesarias y podrían disminuir la legibilidad.

Bueno, las comillas triples se utilizan como comentarios multilínea en cadenas de documentación. Y los # comentarios se usan como comentarios en línea y la gente se acostumbra.

La mayoría de los lenguajes de script tampoco tienen comentarios multilínea. Tal vez esa es la causa?

Ver PEP 0008 , sección Comentarios.

Y vea si su editor de Python ofrece algún método abreviado de teclado para comentarios de bloque. Emacs lo admite, al igual que Eclipse, probablemente la mayoría de los IDE decentes.

Desde el Zen de Python :

Debe haber una, y preferiblemente solo una, obvia forma de hacerlo.

Personalmente mi estilo de comentario en Java es como

 /* * My multi-line comment in Java */ 

Por lo tanto, tener comentarios de una sola línea no es tan malo si su estilo es típico del ejemplo anterior porque en comparación tendría

 # # My multi-line comment in Python # 

VB.NET es también un lenguaje con comentarios de una sola línea, y personalmente me resulta molesto porque los comentarios terminan pareciendo menos comentarios de gustos y más como algún tipo de cita.

 ' ' This is a VB.NET example ' 

Los comentarios de una sola línea terminan teniendo menos uso de caracteres que los comentarios de varias líneas, y es menos probable que algunos caracteres dudosos escapen de una statement de expresiones regulares. Aunque tiendo a estar de acuerdo con Ned.

 # This # is # a # multi-line # comment 

Use el bloque de comentarios o busque y reemplace (s / ^ / # / g) en su editor para lograr esto.

Para comentar un bloque de código en el IDE de Pycharm :

  • Código | Comentar con Line Comment
  • Windows o Linux: Ctrl + /
  • Mac OS: Comando + /

Resolví esto descargando una macro para mi editor de texto (TextPad) que me permite resaltar líneas y luego inserta # en la primera de cada línea. Una macro similar elimina los # ‘s. Algunos pueden preguntarse por qué es necesaria la multilínea, pero resulta útil cuando se intenta “desactivar” un bloque de código con fines de depuración.

Debido a que # la convención es una común, y realmente no hay nada que puedas hacer con un comentario de varias líneas que no puedas con un comentario # -sign. Es un accidente histórico, como la ascendencia de /* ... */ comentarios que se remontan a PL / I,

Supongamos que simplemente fueron considerados innecesarios. Ya que es tan fácil simplemente escribir #a comment , los comentarios de varias líneas pueden consistir en muchos comentarios de una sola línea.

Para HTML , por otro lado, hay más necesidad de multiliners. Es más difícil seguir escribiendo .

Esto es solo una conjetura .. pero

Como son cadenas, tienen algún valor semántico (el comstackdor no se deshace de ellas), por lo tanto, tiene sentido que se usen como cadenas de documentos. En realidad, se convierten en parte de la AST , por lo que la extracción de la documentación se vuelve más fácil.

Además, los comentarios multilínea son una perra . Lamento decirlo, pero independientemente del idioma, no los uso para nada más que para propósitos de depuración. Digamos que tienes un código como este:

 void someFunction() { Something /*Some comments*/ Something else } 

Luego descubre que hay algo en su código que no puede arreglar con el depurador, por lo que comienza a depurarlo manualmente comentando partes de código cada vez más pequeñas con estos comentarios de varias líneas. Esto daría entonces la función:

 void someFunction() { /* Something /* Comments */ Something more*/ } 

Esto es realmente irritante.

Comentarios multilínea utilizando IDLE en:

  • Mac OS X , después de seleccionar el código, comenta un bloque de código con Ctrl + 3 y elimina el comentario con Ctrl + 4 .

  • Windows , después de la selección de código, comente un bloque de código con Ctrl + Alt + 3 y elimine el comentario usando Ctrl + En + 4 .

Recuerdo haber leído sobre un chico que pondría sus comentarios de varias líneas en una variable de tres citas:

 x = ''' This is my super-long mega-comment. Wow there are a lot of lines going on here! ''' 

Esto requiere un poco de memoria, pero le brinda la funcionalidad de comentarios de varias líneas, y además la mayoría de los editores destacarán la syntax para usted 🙂

También es fácil comentar el código simplemente envolviéndolo con

 x = ''' 

y

 '''