web-dev-qa-db-fra.com

Nom constant non valide de Pylint

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
72
gcamargo

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.

104
Reiner Gerecke

Quelques règles simples: 

  1. Les constantes doivent être définies avec uniquement des lettres UPPER_CASE et au niveau du module.
  2. Les noms de classe doivent être définis avec CamelCase lettres
  3. Les variables doivent être définies à lower_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.

Tutoriel Pylint

0
Vishvajit Pathak