J'ai créé un simple script python) pour publier des données sur un site 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
Maintenant, je pensais que nous vérifions les normes de codage de mon script avec l’outil pylint
.
Mon résultat pylint
est le suivant:
************* 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
Maintenant, ma question est de savoir pourquoi pylint
affiche les noms de mes variables sous la forme Invalid name
. Nommer variable de cette manière est une mauvaise convention de codage.
Comme votre code n'est pas contenu dans une classe ou une fonction, il s'attend à ce que ces variables soient constantes et, en tant que telles, elles doivent être majuscules.
Vous pouvez lire PEP8 pour plus d'informations.
EDIT: Comme d’autres l’ont mentionné, pylint s’attend à ce que les variables globales soient UPPERCASE. Si les avertissements vous dérangent vraiment, vous pouvez les contourner en encapsulant de tels extraits dans une fonction main()
-, puis utilisez la commande if __== "__main__"
-convention. Si vous le souhaitez, vous pouvez également modifier les expressions régulières utilisées par pylint pour valider les noms de variables.
De la développeurs de Pylint.
Dans ce cas, Pylint me dit que ces variables semblent être des constantes et devraient être toutes en majuscules. Cette règle est en fait une convention de dénomination propre aux personnes de Logilab qui ont créé Pylint. C'est ainsi qu'ils ont choisi de nommer ces variables. Vous aussi, vous pouvez créer vos propres conventions d'appellation internes, mais pour les besoins de ce tutoriel, nous souhaitons nous en tenir à la norme PEP-8. Dans ce cas, les variables que j'ai déclarées doivent suivre la convention de toutes les minuscules. La règle appropriée serait quelque chose comme: "devrait correspondre à [a-z _] [a-z0-9 _] {2,30} $". Notez les lettres minuscules dans l'expression régulière (a-z versus A-Z)
Vous pouvez le tester en lançant: pylint --const-rgx='[a-z_][a-z0-9_]{2,30}$' x.py
C'est parce que url_to_short
est déclaré dans l’espace de noms global et pylint requiert le nom de variables globales (constantes, par exemple) ALL_UPPERCASE
.
Par conséquent, il vérifie si le nom de votre variable correspond à l’expression rationnelle utilisée pour les globals, qui est: (([A-Z_][A-Z0-9_]*)|(__.*__))$
(noter la A-Z
gammes). D'où le Invalid name
Erreur.