Pylint mostrando el nombre de la variable no válida en la salida

Hice un sencillo script en Python para publicar datos en un sitio web.

#Imports url_to_short = sys.argv[1] post_url = 'https://www.googleapis.com/urlshortener/v1/url' headers = {'Content-Type': 'application/json'} data = {'longUrl': url_to_short} post_data = json.dumps(data) req = urllib2.Request(post_url, post_data, headers) resp = urllib2.urlopen(req) if resp.getcode() == 200: content = json.loads(resp.read()) #Other stuff 

Ahora pensé que vamos a revisar mi script para los estándares de encoding con la herramienta pylint .

Mi salida de pylint es la siguiente:

 ************* Module post C: 1,0: Missing docstring C: 6,0: Invalid name "url_to_short" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) C: 8,0: Invalid name "post_url" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) C: 9,0: Invalid name "headers" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) # Other stuff 

Ahora, mi pregunta es por qué pylint está mostrando mis nombres de variable como Invalid name . Nombrar variable de esta manera es una convención de encoding incorrecta.

Mi salida pylint completa .

Como su código no está contenido en una clase o función, se espera que esas variables sean constantes y, como tales, deberían estar en mayúsculas.

Puedes leer PEP8 para más información.

EDITAR: Como han mencionado otros, pylint espera que las variables globales estén en MAYÚSCULAS. Si las advertencias realmente lo molestan, puede evitarlas envolviendo fragmentos pequeños como este en una función main() y luego use la if __name__ == "__main__" . O si le importa, puede modificar las expresiones regulares que utiliza pylint para validar nombres de variables.

De los desarrolladores de Pylint.

En este caso, Pylint me está diciendo que esas variables parecen ser constantes y deberían ser todas MAYÚSCULAS. De hecho, esta regla es una convención de nomenclatura que es específica para la gente de Logilab que creó Pylint. Esa es la forma en que han elegido para nombrar esas variables. Usted también puede crear sus propias convenciones de nomenclatura internas, pero para el propósito de este tutorial, queremos mantener el estándar PEP-8. En este caso, las variables que declaré deben seguir la convención de todas las minúsculas. La regla apropiada sería algo como: “debe coincidir [a-z _] [a-z0-9 _] {2,30} $”. Observe las letras minúsculas en la expresión regular (az versus AZ)

Puede probarlo ejecutando: pylint --const-rgx='[a-z_][a-z0-9_]{2,30}$' x.py

Esto se debe a que url_to_short se declara en el espacio de nombres global, y pylint requiere que las variables globales (por ejemplo, constantes) se ALL_UPPERCASE .
Por lo tanto, comprueba si el nombre de su variable coincide con la expresión regular utilizada para las variables globales, que es: (([A-Z_][A-Z0-9_]*)|(__.*__))$ (tenga en cuenta los rangos de AZ ). De ahí el Invalid name .