wake-up-neo.com

Ungültiger konstanter Konstantenname

Ich erhalte eine Pylint-Fehlermeldung in Bezug auf meine Konstante: MIN_SOIL_PARTICLE_DENS (ungültiger Name). Hier ist meine volle Funktion:

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

Bei der Namensüberprüfung unterscheidet Pylint zwischen Konstanten, Variablen, Klassen usw. Jeder Name, der sich nicht in einer Funktion/Klasse befindet, wird als Konstante betrachtet, alles andere ist eine Variable.

Siehe http://docs.pylint.org/features.html#basic-checker

variable-rgx:
[a-z_][a-z0-9_]{2,30}$

const-rgx:
(([A-Z_][A-Z0-9_]*)|(__.*__))$

Da Sie sich in einer Funktion befinden, soll MIN_SOIL_PARTICLE_DENS (gemäß Pylint) eine Variable sein, Pylint behandelt sie jedoch als Konstante und beschwert sich daher.

Das bedeutet, dass Sie keine Funktionen in Großbuchstaben verwenden können, ohne dass sich pylint beschwert.


Wenn Sie mich fragen, ist die Verwendung von Großbuchstaben-Funktionen in Ordnung. Nicht alle Konstanten sind notwendigerweise global definiert.

104
Reiner Gerecke

Einige einfache Regeln: 

  1. Konstanten sollten nur mit UPPER_CASE-Buchstaben und auf Modulebene definiert werden
  2. Klassennamen sollten mit CamelCase Buchstaben definiert werden
  3. Variablen sollten unter lower_case und innerhalb von Funktionen, Klassen usw. definiert werden.

Lassen Sie uns jetzt über Ihren Fall sprechen, 

MIN_SOIL_PARTICLE_DENS ist innerhalb einer Funktion definiert und sollte nur aus unteren Buchstaben bestehen. Anstatt MIN_SOIL_PARTICLE_DENS als Konstante zu betrachten, betrachtet pylint es hier als Variable und daher als Pylint-Fehler.

Pylint Tutorial

0