Je suis principalement un programmeur Python qui utilise pylint pour imbriquer le code source. Je suis en mesure d'éliminer tous les avertissements sauf un: Nom non valide pour une constante. Changer le nom en majuscule le corrige, mais suis-je vraiment supposé faire cela? Si je le fais, je trouve que mon code a l'air laid, car la plupart des variables sont constantes (selon pylint).
python
coding-style
coding-standards
conventions
Abhishek Kumar
la source
la source
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)
Réponses:
Vous écrivez probablement un code comme celui-ci:
Vous devriez déplacer ce code dans une fonction:
Pylint suppose que le code qui fait le travail sera à l'intérieur d'une fonction. Parce que vous avez ce code au plus haut niveau de votre code plutôt que dans une fonction, cela devient confus.
De manière générale, il est préférable de travailler dans une fonction plutôt qu'au niveau supérieur. Cela vous permet de mieux organiser ce que vous faites et facilite sa réutilisation. Vous devriez vraiment avoir du code exécutant un algorithme en dehors d'une fonction dans un script rapide et sale.
la source
Oui. Selon la règle PEP8 sur les constantes :
Version longue:
Dans la communauté Python (comme dans beaucoup d'autres communautés), il existe des conventions sur la manière d'écrire du code. Cela diffère du code de travail : même si vous écrivez vos constantes en minuscules, votre code fonctionne toujours.
Mais il existe un consensus communautaire (comme documenté dans PEP8) qui est "appliqué" avec des outils tels que pylint . Si vous programmez pour votre propre bonheur, vous risquez de négliger les allusions que vous donne Pylint. Si vous souhaitez un échange ouvert avec la communauté, autrement dit "quelqu'un d'autre que moi doit utiliser mon code", vous devez préparer votre code conformément à PEP8.
la source
pylint
de se tromper. Python ne permet pas de distinguer une constante d'une variable, sinon que la constante doit toujours avoir la même valeur.pylint
suppose que tout ce qui n'est défini qu'une fois et qui ne change jamais est une constante, mais à moins que ce ne soit censé être une constante, cela pourrait simplement être un artefact de la mise en œuvre. Et plus précisément, le code donné dans le commentaire de la question contient des valeurs qui seront différentes à chaque exécution. Par conséquent, vous ne devez pas les considérer comme des constantes, même si pylint pense qu'elles le sont.const
mot clé. Bien que la valeur initiale soit différente, à part peut-êtrePI
.pylint
supposons le dernier, même lorsque le premier est le cas.La norme de communauté PEP8 et Python est à utiliser
ALL_CAPS_CONSTANTS
. C'est un indice visuel commun, utilisé depuis des décennies en C, Java, Perl, PHP, Python, bash et autres langages de programmation et environnements shell. Mais dans le langage en ligne moderne, TOUS LES CAPS SIGNIFIE CRIENT . Et crier est impoli.Python est cependant plutôt incohérent
ALL_CAPS_CONSTANTS
. JavaScript peut avoirMath.PI
, mais Python amath.pi
. Il n'y a pas de constante plus reconnaissable ou durable que π. Ou considérezsys.version_info
la version de Python que vous utilisez. 100% constant sur la durée de votre programme - bien plus quePORT
ouMAX_ITERATIONS
ou d'autres constantes que vous définiriez. Ou à propossys.maxsize
? La valeur entière maximale de votre plate-forme est constante non pas sur un ou deux programmes, mais sur la durée de vie de votre matériel.Si ces constantes - y compris certaines comme π et e qui sont des constantes fondamentales de l'univers et ne varieront pas au cours de toute l'éternité - si elles peuvent être en minuscule, eh bien ... les autres constantes le peuvent aussi. Tu peux choisir.
Rappelez-vous que PEP8 est un guide de style. Une ligne directrice, pas une loi. Une directive souvent enfreinte, même par la bibliothèque standard de Python. Et citant une autre directive de base de Python, PEP20 (alias "Le zen de Python"):
Sur le plan pratique, lorsqu'un programme de
YELLY_CONSTANT
etSHOUTY_PARAMETER
commence à râper, il aide à se rappeler que les constantes en majuscules ne sont généralement pas vraiment enduraient idéaux platoniciens , mais les paramètres d'une exécution du programme. Il n’ya rien de vraiment constant à propos dePORT
,SITENAME
etNUMRUNS
, et ils ne doivent pas être gérés comme des programmes globaux autonomes. Par exemple, ils peuvent être déposés dans un dictionnaire sous la forme d'un ensemble de paramètres de programme accessible de manière globale:Python dispose également d’une fonctionnalité de passage de paramètres par mot clé fine qui réduit le besoin d’utiliser
APPARENTLY_ANGRY_GLOBAL_VARIABLES
:En pratique, beaucoup de ces valeurs seront (ou devraient être) lues à partir de fichiers de configuration, de variables d’environnement de système d’exploitation, d’arguments de ligne de commande ou d’autres sources pour satisfaire l’ inversion du principe / modèle de contrôle . Mais c'est une histoire plus large pour un autre jour.
la source
Oui, c'est assez courant dans la plupart des langages de programmation (du moins ceux que j'utilise).
Vous pouvez vous référer à ce lien Google pour partager un style commun entre les développeurs de la même équipe.
Il est conseillé d'utiliser
la source