program story

Pylint 유효하지 않은 상수 이름

inputbox 2020. 10. 17. 10:27
반응형

Pylint 유효하지 않은 상수 이름


내 상수와 관련하여 Pylint 오류가 표시됩니다 : MIN_SOIL_PARTICLE_DENS(잘못된 이름). 이 상수가 잘못된 이유는 무엇입니까? 내 모든 기능은 다음과 같습니다.

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

이름을 확인할 때 Pylint는 상수, 변수, 클래스 등을 구분합니다. 함수 / 클래스 내에없는 이름은 상수로 간주되고 다른 이름은 변수로 간주됩니다.

참조 http://docs.pylint.org/features.html#basic-checker를

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

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

당신이 함수에 있기 때문에 MIN_SOIL_PARTICLE_DENS(pylint에 따르면) 변수로 간주되지만 pylint는 그것을 상수로 취급하므로 불평합니다.

이것은 pylint가 불평하지 않고 함수 안에 대문자 이름을 가질 수 없음을 의미합니다.


저에게 물어 보면 함수 내부에 대문자를 사용하는 것이 좋습니다. 모든 상수가 반드시 전역 적으로 정의되는 것은 아닙니다.


몇 가지 간단한 규칙 :

  1. 상수는 UPPER_CASE문자로만 정의해야하며 모듈 수준에서 정의해야합니다.
  2. 클래스 이름은 CamelCase문자 로 정의해야합니다.
  3. 변수는에서 정의 lower_case해야하며 함수, 클래스 등에서 정의해야합니다.

이제 귀하의 사건에 대해 이야기하겠습니다.

MIN_SOIL_PARTICLE_DENS함수 내에서 정의되며 소문자 만 있어야합니다. 따라서 MIN_SOIL_PARTICLE_DENS상수 로 간주 하는 대신 pylint는 여기에서 변수로 간주하므로 pylint 오류가 발생합니다.

Pylint 튜토리얼


이 동작이 성가시다는 것을 알았지 만이를 방지하기 위해 파일 린트를 구성하는 방법이 있습니다!

다음 ini 스타일 선언을 .pylintrc파일에 병합 합니다.

[BASIC]
variable-rgx=((([a-z_][a-z0-9_]{2,})|(_[a-z0-9_]*)|(__[a-z][a-z0-9_]+__))$)|([A-Z_][A-Z0-9_]+$)

나는이 정규식을

그리고 |괄호로 연결합니다 .

이론적으로는을 사용할 수도 .*있지만 mixed_CASE.

참고 URL : https://stackoverflow.com/questions/25184097/pylint-invalid-constant-name

반응형