[python] pylint가 단일 문자 변수 이름에 반대하는 이유는 무엇입니까?

나는 여전히 파이썬 규칙에 익숙해지고 pylint내 코드를 더 파이썬 적으로 만들기 위해 사용 하고 있지만, pylint가 단일 문자 변수 이름을 좋아하지 않는다는 사실에 의아해합니다. 다음과 같은 몇 가지 루프가 있습니다.

for x in x_values:
   my_list.append(x)

내가 실행할 때 pylint, 나는군요 Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}유효한 변수 이름은 3 ~ 31 자 사이 여야 제안,하지만 나는이를 통해 검토 한 – PEP8 명명 규칙 과 나는 하나의 소문자에 대한 명시 적 아무것도 표시되지 않습니다 , 그리고 나는 그것들을 사용하는 많은 예를 봅니다.

PEP8에서 빠진 것이 있습니까? 아니면 이것이 파일 린트 고유의 표준입니까?



답변

PyLint는 PEP8 권장 사항뿐만 아니라 확인합니다. 또한 자체 권장 사항이 있는데, 그중 하나는 변수 이름이 너무 짧아서는 안되고 설명 적이어야한다는 것입니다.

이를 사용하여 이러한 짧은 이름을 피할 수 있습니다.

my_list.extend(x_values)

또는 PyLint의 구성 을 조정 하여 어떤 변수 이름이 좋은지 PyLint에 알립니다.


답변

gurney alex가 지적한 내용에 대해 좀 더 자세히 설명합니다. PyLint에게 변수 이름에 대한 예외를 만들도록 지시 할 수 있습니다.이 변수 이름 은 3 자 미만 임에도 완벽하게 명확합니다. 헤더 아래에서 pylintrc 파일 을 찾거나 추가합니다 [FORMAT].

# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_,pk,x,y

여기서 pk (기본 키용), x 및 y는 내가 추가 한 변수 이름입니다.


답변

강력한 형식의 언어에서는 일반적으로 변수 선언 또는 함수 / 메서드 프로토 타입에서 이름 옆에 형식을 가져 오므로 1 자 이름 변수는 괜찮을 수 있습니다.

bool check_modality(string a, Mode b, OptionList c) {
    ModalityChecker v = build_checker(a, b);
    return v.check_option(c);
}

Python에서는이 정보를 얻지 못하므로 다음과 같이 작성하면됩니다.

def check_modality(a, b, c):
    v = build_checker(a, b)
    return v.check_option(c)

함수가 수행 할 수있는 작업, 호출 방법 및 반환되는 내용에 대해 유지 관리 팀에 전혀 단서가 없습니다. 따라서 Python에서는 설명적인 이름을 사용하는 경향이 있습니다.

def check_modality(name, mode, option_list):
    checker = build_checker(name, mode)
    return checker.check_option(option_list)

그리고 당신은 물건이하는 일과 예상되는 유형을 설명하는 독 스트링을 추가합니다.


답변

요즘에는 regexp를 재정의하는 옵션도 있습니다. 즉, 단일 문자를 변수로 허용하려는 경우 :

pylint --variable-rgx="[a-z0-9_]{1,30}$" <filename>

따라서 pylintPEP8과 일치하고 추가 위반 사항이 발생하지 않습니다. 또한에 추가 할 수 있습니다 .pylintrc.


답변

깊은 이유는 당신이 의도를 기억할 수 있다는 것이다 a, b, c, x, y, 그리고 z당신은 당신의 코드를 쓸 때 의미하지만, 다른 사람들이 그것을 읽을 때, 또는 당신은 당신의 코드에 돌아올 경우에도 코드가 당신이 줄 때 훨씬 더 읽기된다 의미 론적 이름입니다. 우리는 칠판에 한 번만 적었다가 지우는 것이 아닙니다. 우리는 10 년 이상 지속되고 여러 번 읽을 수있는 코드를 작성하고 있습니다.

의미 론적 이름을 사용하십시오. 내가 사용했던 시맨틱 이름이 같았 ratio, denominator, obj_generator, path, 등 그것은 그들을 입력 여분의 두 번째 또는 두 걸릴 수 있지만, 시간은 당신이 그때부터도 반 시간 쓴 알아 내려고 저장 잘 가치가있다 .


답변