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
69
demandé sur Wooble 2014-08-07 17:39:49

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.

101
répondu Reiner Gerecke 2018-01-23 16:29:18

Quelques règles simples :

  1. Les constantes doivent être définies avec UPPER_CASE lettres seulement et doivent être définies 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 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.

Tutoriel Pylint

0
répondu Vishvajit Pathak 2018-08-22 22:07:12