Pylint nom de constante invalide
Je reçois une erreur Pylint concernant ma constante: MIN_SOIL_PARTICLE_DENS
(Nom invalide).
Des idées pourquoi cette constante est fausse? Voici ma fonction complète:
def bulk_density(clay, sand, organic_matter):
MIN_SOIL_PARTICLE_DENS = 2.65
x1 = (0.078 + 0.278 * sand + 0.034 * clay + 0.022 * organic_matter - 0.018
* sand * organic_matter - 0.027 * clay * organic_matter - 0.584 * sand
* clay)
x2 = -0.107 + 1.636 * x1
field_capacity = vol_water_content_33_j_kg(clay, sand, organic_matter)#m3/m3
sat_water_content = 0.043 + field_capacity + x2 - 0.097 * sand
return (1 - sat_water_content) * MIN_SOIL_PARTICLE_DENS
2 réponses
Lors de la vérification des noms, Pylint fait la différence entre les constantes, les variables, les classes, etc. Tout nom qui n'est pas dans une fonction/Classe sera considéré comme une constante, toute autre chose est une variable.
Voir http://docs.pylint.org/features.html#basic-checker
Variable-rgx:
[a-z_][a-z0-9_]{2,30}$
Const-rgx:
(([A-Z_][A-Z0-9_]*)|(__.*__))$
Parce que vous êtes dans une fonction, MIN_SOIL_PARTICLE_DENS
est (selon pylint) censé être une variable, pylint la traite cependant comme une constant et se plaint donc.
Cela signifie que vous ne pouvez pas avoir de noms majuscules dans les fonctions sans que pylint se plaint.
Si vous me demandez, utiliser des fonctions intérieures majuscules est bien; toutes les constantes ne sont pas nécessairement définies globalement.
Quelques règles simples :
- Les constantes doivent être définies avec
UPPER_CASE
lettres seulement et doivent être définies au niveau du module - les noms de Classe doivent être définis avec
CamelCase
lettres - Les Variables doivent être définies à
lower_case
et doivent être définies dans la fonction, les classes, etc.
Parlons maintenant de votre cas,
MIN_SOIL_PARTICLE_DENS
est défini à l'intérieur d'une fonction et ne doit avoir que des lettres minuscules. Ainsi, au lieu de considérer MIN_SOIL_PARTICLE_DENS
comme une constante, pylint la considère comme une variable ici et donc l'erreur pylint.