source

파이캄의 검사관이 "d = {}"에 대해 불평하는 이유는 무엇입니까?

itover 2022. 12. 11. 10:21
반응형

파이캄의 검사관이 "d = {}"에 대해 불평하는 이유는 무엇입니까?

사전 초기화 시d = {}파이캄의 코드 검사기가 경고 메시지를 생성합니다.

이 사전 작성은 사전 리터럴로 다시 쓰여질 수 있습니다.

다시 쓰면d = dict()경고가 사라집니다.부터{}이미 사전 리터럴입니다. 메시지가 잘못된 게 분명합니다.더군다나, 둘 다d = {}그리고.d = dict()유효하고 피톤적이다.

이 관련 질문은 "d = dict()"와 "d = {}" 사이의 차이점인 스타일/선호도의 문제라고 결론짓는 것 같습니다.

왜 파이캄이 이 사건에 대해 불평했을까요?d = {}?

갱신:

맥이 해냈다.경고는 플래그가 부착된 행뿐만 아니라 여러 행에도 실제로 적용되었습니다.

Pycharm은 사전을 초기화하고 사전에서 값을 설정하는 일련의 연속 문을 찾는 것 같습니다.예를 들어, 다음과 같은 경고가 트리거됩니다.

d = {}
d['a'] = 1

그러나 이 코드는 다음과 같습니다.

d = {}
pass
d['a'] = 1

사전 선언 뒤에 있는 코드는 무엇입니까?

다음과 같은 경우 PyCharm이 오류를 트리거할 수 있습니다.

dic = {}
dic['aaa'] = 5

네가 썼던 것처럼

dic = {'aaa': 5}

주의: 함수를 사용하면 오류가 사라집니다.dict()그렇다고 해서 파이컴이 이 사건을dict()문자 그대로입니다.이는 단지 불평하지 않는다는 것을 의미할 수 있습니다.

dic = dict()
dic['aaa'] = 5

프로젝트 설정 또는 기본 설정에서 비활성화할 수 있습니다.

  • 설정 -> 검사 -> Python으로 이동합니다.
  • "사전 작성은 사전 리터럴로 다시 쓸 수 있습니다" 선택을 취소합니다.

(나처럼) 한 번의 조작으로 사전을 초기화하는 것을 좋아하는 사람을 위해

d = {
  'a': 12,
  'b': 'foo',
  'c': 'bar'
}

같은 많은 대사 대신

d = dict()
d['a'] = 12
d['b'] = ....

결국 나는 이렇게 되었다.

d = dict()
d.update({
  'a': 12,
  'b': 'foo',
  'c': 'bar'
})

Pycharm은 이것에 대해 불평하지 않는다.

mydict = {
  a: 5,
  b:z+c/2
}

사전을 먼저 초기화하고 새 값을 재할당하지 않고 직접 만들 수 있습니다.

나는 이 경고가 나를 짜증나게 하는 상황이 있다.내 경우, 다음과 같이 부분적으로 리터럴로, 그리고 부분적으로 함수에 의한 튜플 출력으로 dict를 채우고 있습니다.

def get_other_values():
    return 3, 4

foo = {
    "a": 1,
    "b": 2
}
foo["c"], foo["d"] = get_other_values()

따라서 get_other_values 출력에 대해 중간 변수를 만들지 않는 한 리터럴로 dict를 작성해도 PEP8은 이 경고를 생성합니다.또한 c 키와 d 키를 리터럴로 할당할 수 없습니다.값이 태플로 출력되기 때문입니다.

언급URL : https://stackoverflow.com/questions/8406242/why-does-pycharms-inspector-complain-about-d

반응형