it-swarm-ko.tech

'id'는 Python의 잘못된 변수 이름입니다.

파이썬에서 변수 id의 이름을 지정하는 것이 왜 나쁜가요?

117
brian buck

id()은 기본적으로 내장되어 있습니다.

__builtin__ 모듈의 내장 함수 id에 대한 도움말 :

id(...)

    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it's the object's memory
    address.)

일반적으로, 어떤 언어로든 키워드 또는 내장 함수를 Eclipse로 사용하는 변수 이름을 사용하는 것은 허용 되더라도 나쁜 생각입니다.

120
Kevin Little

id는 객체의 메모리 주소를 제공하는 내장 함수입니다. id 함수 중 하나의 이름을 지정하면 __builtins__.id 원본을 가져옵니다. 전 세계적으로 id 이름을 바꾸는 것은 작은 스크립트 외에는 혼란 스럽습니다.

그러나 내장 이름을 변수로 재사용하는 것이 로컬로 사용되는 한 그렇게 나쁘지는 않습니다. Python 내장 함수의 lot)에는 (1) 공통 이름이 있고 (2) 어쨌든 많이 사용하지 않을 것입니다. 컨텍스트에서 당신이하고있는 일이 분명하기 때문에 객체의 멤버는 괜찮습니다.

예:

def numbered(filename):
  file = open(filename)
  for i,input in enumerate(file):
    print "%s:\t%s" % (i,input)
  file.close()

유혹적인 이름을 가진 일부 내장 기능 :

  • id
  • file
  • list
  • map
  • all, any
  • complex
  • dir
  • input
  • slice
  • buffer
48

PEP 8-Python Code 스타일 가이드)에서 다음 지침은 설명 : 명명 스타일 :

  • single_trailing_underscore_ : Python 키워드, 예를 들어.

    Tkinter.Toplevel(master, class_='ClassName')

따라서 질문에 대답하기 위해이 지침을 적용하는 예는 다음과 같습니다.

id_ = 42

변수 이름에 후행 밑줄을 포함 시키면 의도가 명확 해집니다 (PEP 8의 지침에 익숙한 사람들에게).

44
DavidRR

id()은 비즈니스 로직에서 거의 사용되지 않는 다소 전문화 된 내장 함수입니다. 따라서 타이트하고 잘 작성된 함수에서 변수 이름으로 변수 이름을 사용할 때 문제가 발생하지 않습니다 .ID가 내장 함수를 의미하지 않는다는 것이 분명합니다.

41
Sebastian Rittau

내장 함수 후에 변수 이름을 짓는 것은 좋지 않습니다. 그 이유 중 하나는 이름이 무시되는 독자에게 혼란을 줄 수 있기 때문입니다.

4
Toni Ruža

'id'는 Python에 내장 된 메소드입니다. 'id'에 값을 할당하면 메소드를 덮어 씁니다. "some_id"에서와 같이 식별자를 사용하거나 다른 대문자 방식으로 사용하는 것이 가장 좋습니다.

내장 메소드는 단일 매개 변수를 사용하여 전달한 오브젝트의 메모리 주소에 대한 정수를 리턴합니다.

>>>id (1)

9787760

>>>x = 1

>>>id (x)

9787760

1
brian buck

내장 함수의 이름이기 때문입니다.

1
ahockley