Je reçois une erreur Pylint concernant ma constante: MIN_SOIL_PARTICLE_DENS
(nom invalide) . Avez-vous une idée de la raison pour laquelle 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
Lors de la vérification des noms, Pylint fait la distinction entre constantes, variables, classes, etc. Tout nom ne figurant pas dans une fonction/classe sera considéré comme une constante, tout le reste 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_]*)|(__.*__))$
Puisque vous êtes dans une fonction, MIN_SOIL_PARTICLE_DENS
est (selon pylint) censé être une variable, pylint le traite toutefois comme une constante et se plaint donc.
Cela signifie que vous ne pouvez pas avoir de noms majuscules dans les fonctions sans vous plaindre de pylint.
Si vous me le demandez, utiliser des fonctions majuscules à l'intérieur est correct; toutes les constantes ne sont pas nécessairement définies globalement.
Quelques règles simples:
UPPER_CASE
et au niveau du module.CamelCase
lettreslower_case
et dans la fonction, les classes, etc.Parlons maintenant de votre cas,
MIN_SOIL_PARTICLE_DENS
est défini dans une fonction et ne doit comporter que des lettres plus basses. 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.