Soy un programador de Python principalmente que usa pylint para el código fuente de linting. Puedo eliminar todas las advertencias excepto una: Nombre no válido para una constante. Cambiar el nombre a mayúsculas lo arregla, pero ¿realmente se supone que debo hacer eso? Si lo hago, encuentro que mi código se ve feo ya que la mayoría de las variables son constantes (según pylint).
python
coding-style
coding-standards
conventions
Abhishek Kumar
fuente
fuente
NOTES_DIRECTORY = argv[1] chdir(NOTES_DIRECTORY) FILES = glob('*.txt') RAND_FILE = choice(FILES) with open(RAND_FILE) as notes_file: POINTS = notes_file.readlines() RAND_POINT = choice(POINTS)
Respuestas:
Probablemente esté escribiendo código como este:
Debe mover este código a una función:
Pylint asume que el código que realmente hace el trabajo estará dentro de una función. Debido a que tiene este código en el nivel superior de su código en lugar de dentro de una función, se confunde.
En términos generales, es mejor trabajar dentro de una función que en el nivel superior. Esto le permite organizar mejor lo que está haciendo y facilita la reutilización. Realmente solo debe tener código que realice un algoritmo fuera de una función en un script rápido y sucio.
fuente
Sí. De acuerdo con la regla de PEP8 sobre constantes :
Versión larga:
En la comunidad Python (como en muchas otras comunidades) existen convenciones sobre cómo escribir código. Esto es diferente del código de trabajo : incluso si escribe sus constantes en minúsculas, su código aún funciona.
Pero existe un consenso de la comunidad (como se documenta en PEP8) que se "aplica" con herramientas como pylint . Si programa para su propia felicidad, puede descuidar los consejos que le da pylint. Si desea un intercambio abierto con la comunidad, también conocido como »alguien además de mí debería usar mi código«, debe preparar su código de acuerdo con PEP8.
fuente
pylint
equivocarse. Python no proporciona una forma de distinguir una constante de una variable, aparte de que se espera que la constante siempre tenga el mismo valor.pylint
asume que todo lo que se establece una sola vez y que nunca cambia es una constante, pero a menos que se pretenda que sea una constante, eso podría ser solo un artefacto de la implementación. Y específicamente el código dado en el comentario a la pregunta tiene valores que serán diferentes en cada ejecución, por lo tanto, no deben considerarse constantes incluso si pylint cree que lo son.const
palabra clave. Aunque el valor inicial es diferente, aparte de tal vezPI
.pylint
asume esto último incluso cuando el primero es el caso.Se debe usar la norma de la comunidad PEP8 y Python
ALL_CAPS_CONSTANTS
. Es una pista visual común, utilizada durante décadas en C, Java, Perl, PHP, Python, bash y otros lenguajes de programación y entornos de shell. Pero en el lenguaje moderno en línea, TODAS LAS MAYÚSCULAS SIGNIFICA GRITOS . Y gritar es grosero.Python es, sin embargo, bastante inconsistente al respecto
ALL_CAPS_CONSTANTS
. JavaScript puede tenerMath.PI
, pero Python tienemath.pi
. No hay una constante más reconocible o duradera que π. O consideresys.version_info
, la versión de Python que está ejecutando. 100% constante durante la vida de su programa - mucho más quePORT
oMAX_ITERATIONS
u otras constantes que le defina. ¿O qué talsys.maxsize
? El valor entero nativo máximo de su plataforma es constante no solo en una o dos ejecuciones de programa, sino también en la vida de su hardware.Si estas constantes - incluyendo algunos como π y e que son constantes fundamentales del universo, y no varían a lo largo toda la eternidad - si es que puede ser minúscula, así ... lo mismo pueden hacer otras constantes. Tu puedes elegir.
Recuerde, PEP8 es una guía de estilo. Una directriz, no una ley. Una guía a menudo infringida incluso por la biblioteca estándar de Python. Y citando otra directriz central de Python, PEP20 (también conocido como "El Zen de Python"):
En una nota práctica, cuando el jugador de un programa
YELLY_CONSTANT
ySHOUTY_PARAMETER
empieza a rallar, es útil recordar que las constantes en mayúsculas generalmente no son realmente soportando los ideales platónicos , pero los parámetros de la ejecución del programa. No hay nada realmente constante acerca dePORT
,SITENAME
oNUMRUNS
, y no tienen que ser administrados como programas globales independientes. Por ejemplo, se pueden colocar en un diccionario como un paquete de parámetros de programa accesible a nivel mundial:Python también tiene una palabra clave bien el traspaso de parámetros instalación que reduce la necesidad de su uso
APPARENTLY_ANGRY_GLOBAL_VARIABLES
:En la práctica, muchos de estos valores serán (o deberían ser) leídos de archivos de configuración, variables de entorno del sistema operativo, argumentos de línea de comando u otras fuentes para satisfacer la inversión del principio / patrón de control . Pero esa es una historia más grande para otro día.
fuente
Sí, es bastante común en la mayoría de los lenguajes de programación (al menos los que uso).
Puede consultar este enlace de Google para compartir un estilo común entre los desarrolladores del mismo equipo.
Se recomienda usar
fuente