standard name missing how español docstrings coding python pylint naming-conventions

missing - python class name convention



¿Por qué pylint se opone a nombres de variables de un solo carácter? (5)

En los lenguajes fuertemente tipados, las variables de nombre de una letra pueden estar bien, porque generalmente el tipo se encuentra al lado del nombre en la declaración de la variable o en el prototipo de función / método:

bool check_modality(string a, Mode b, OptionList c) { ModalityChecker v = build_checker(a, b); return v.check_option(c); }

En Python, no obtienes esta información, así que si escribes:

def check_modality(a, b, c): v = build_checker(a, b) return v.check_option(c)

no está dejando absolutamente ninguna pista para el equipo de mantenimiento sobre qué podría estar haciendo la función, cómo se llama y qué devuelve. Entonces en Python, tiendes a usar nombres descriptivos:

def check_modality(name, mode, option_list): checker = build_checker(name, mode) return checker.check_option(option_list)

e incluso agrega una cadena de documentos que explica qué hacen las cosas y qué tipos se esperan.

Todavía me estoy acostumbrando a las convenciones de python y uso pylint para hacer que mi código sea más pitónico, pero estoy sorprendido por el hecho de que a pylint no le gustan los nombres de variable de un solo carácter. Tengo algunos bucles como este:

for x in x_values: my_list.append(x)

y cuando ejecuto pylint , recibo un Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30} - eso sugiere que un nombre de variable válido debe estar entre 3 y 31 caracteres de largo, pero he revisado las convenciones de nomenclatura PEP8 y no veo nada explícito con respecto a las letras minúsculas, y sí veo muchos ejemplos que las usan.

¿Hay algo que me falta en PEP8 o es este un estándar que es exclusivo de pylint?


Hoy en día también hay una opción para anular regexp. Es decir, si desea permitir caracteres individuales como variables:

pylint --variable-rgx="[a-z0-9_]{1,30}$" <filename>

Por lo tanto, pylint coincidirá con PEP8 y no traerá violaciones adicionales en la parte superior. También puedes agregarlo a .pylintrc .


La razón más profunda es que puede recordar lo que quiso decir a , b , c , x , y , z para significar cuando escribió su código, pero cuando otros lo leen, o incluso cuando vuelve a su código, el código se convierte en Mucho más legible cuando le das un nombre semántico. No escribimos cosas una vez en una pizarra y luego las borramos. Estamos escribiendo un código que puede durar una década o más, y leerlo muchas, muchas veces.

Usa nombres semánticos. Los nombres semánticos que he usado han sido: ratio , denominator , obj_generator , path , etc. Es posible que se obj_generator uno o dos segundos más para escribirlos, pero el tiempo que ahorre al intentar averiguar lo que escribió, incluso media hora después. bien vale la pena


PyLint comprueba no solo las recomendaciones de PEP8. También tiene sus propias recomendaciones, una de las cuales es que el nombre de una variable debe ser descriptivo y no demasiado corto.

Puedes usar esto para evitar nombres tan cortos:

my_list.extend(x_values)

O modifique la configuration de PyLint para decirle a PyLint qué nombre de variable es bueno.


Un poco más de detalles sobre lo que señaló gurney alex: puede decirle a PyLint que haga excepciones para los nombres de variables que (usted confía en el meñique) son perfectamente claros aunque tengan menos de tres caracteres. Encuentre o añada a su archivo pylintrc , bajo el encabezado [FORMAT] :

# Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_,pk,x,y

Aquí pk (para la clave principal), x e y son nombres de variables que he agregado.