salto - texto en python
¿Por qué Python no tiene comentarios multilínea? (16)
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 con las comillas triples, pero tengo un poco de curiosidad por lo que llevó a esta decisión de diseño.
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 multilínea. Esto daría entonces la función:
void someFunction()
{ /*
Something
/* Comments */
Something more*/
}
Esto es realmente irritante.
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.
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 del código, comente un bloque de código con Ctrl + Alt + 3 y elimine el comentario usando Ctrl + En + 4 .
Debido a que la # convención es una común, y realmente no hay nada que puedas hacer con un comentario multilínea que no puedas con un comentario # -sign. Es un accidente histórico, como la ascendencia de /* ... */
comentarios que se remontan a PL / I,
Desde el Zen de Python :
Debe haber una, y preferiblemente solo una, obvia forma de hacerlo.
Dudo que obtenga una respuesta mejor que "Guido no sintió la necesidad de comentarios de varias líneas".
Guido ha tweeted 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! :-)
El texto entre comillas triples NO debe considerarse comentarios de varias líneas; Por convención, son docstrings . 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 sola línea (busque "comentarios de bloque").
Para comentar bloques de código, a veces uso el siguiente patrón:
if False:
# A bunch of code
Esto es solo una conjetura .. pero
Debido a que son cadenas, tienen algún valor semántico (el compilador 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 resulta más fácil.
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.
Los comentarios multilínea son fácilmente rompibles. ¿Qué pasa si tienes lo siguiente en un programa de calculadora simple?
operation = ''''
print("Pick an operation: +-*/")
# Get user input here
Intenta comentarlo 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.
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 + /
Personalmente mi estilo de comentario en decir 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 también es 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 declaración de expresiones regulares. Aunque tiendo a estar de acuerdo con Ned.
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 funcionalidad de comentarios de varias líneas, y además la mayoría de los editores destacarán la sintaxis para usted :)
También es fácil comentar el código simplemente envolviéndolo con
x = ''''''
y
''''''
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.
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 <!--comments like this-->
.
# This
# is
# a
# multi-line
# comment
Use el bloque de comentarios o busque y reemplace (s / ^ / # / g) en su editor para lograr esto.