programing

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

css3 2023. 6. 24. 09:28

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

을 지정하는 는 무엇입니까?id파이썬에서?

id()입니다.

제공 기능 id 모안에에__builtin__:

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.)

일반적으로 모든 언어에서 키워드나 내장 함수를 가리는 변수 이름을 사용하는 것은 허용되더라도 좋지 않은 생각입니다.

PEP 8 - Python Code용 스타일 가이드에서 설명: 명명 스타일 섹션에 다음 지침이 나타납니다.

  • single_trailing_underscore_Python 키워드와의 충돌을 피하기 위해 관습에 의해 사용됩니다.

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

따라서 이 지침을 적용하는 예는 다음과 같습니다.

id_ = 42

변수 이름에 뒤에 밑줄을 포함하면 의도가 명확해집니다(PEP 8의 지침에 익숙한 사용자에게).

id 는 개체의 ID(CPython의 메모리 주소이기도 함)를 제공하는 내장 함수입니다.기능 중 하나의 이름을 지정하는 경우id원본(또는)을 얻기 위해 말해야 할 것입니다.__builtins__.idCython)입니다.이름바기로 이름 id전 세계적으로 작은 스크립트를 제외한 모든 것이 혼란스럽습니다.

그러나 기본 제공 이름을 변수로 재사용하는 것은 로컬 사용인 한 그렇게 나쁘지 않습니다.Python은 (1) 공통 이름을 가지고 있고 (2) 어쨌든 많이 사용하지 않을 많은 내장 기능을 가지고 있습니다.이러한 변수를 로컬 변수 또는 개체의 멤버로 사용해도 됩니다. 상황에 따라 수행하는 작업이 명확하기 때문입니다.

예:

def numbered(filename):
    with open(filename) as file:
        for i, input in enumerate(file):
            print("%s:\t%s" % (i, input), end='')

매력적인 이름의 일부 기본 제공:

여기서 없는 할요: 여서인기없말할을수있다습니도는기▁i있다니습▁something▁here:.id()는 비즈니스 로직에서 거의 사용되지 않는 다소 전문화된 내장 함수입니다.따라서 id가 내장 함수를 의미하지 않는 것은 분명하지만, 엄격하고 잘 작성된 함수에서 변수 이름으로 사용하는 것은 문제가 없다고 생각합니다.

다른 사람들은 그것이 혼란스럽다고 언급했지만, 저는 그 이유를 확장하고 싶습니다.여기 실화를 바탕으로 한 예가 있습니다.기본적으로, 저는 수업을 듣는 수업을 썼습니다.id매개 변수를 사용했지만 기본 제공 기능을 사용하려고 했습니다.id

class Employee:
    def __init__(self, name, id):
        """Create employee, with their name and badge id."""
        self.name = name
        self.id = id
        # ... lots more code, making you forget about the parameter names
        print('Created', type(self).__name__, repr(name), 'at', hex(id(self)))

tay = Employee('Taylor Swift', 1985)

예상 출력:

Created Employee 'Taylor Swift' at 0x7efde30ae910

실제 출력:

Traceback (most recent call last):
  File "company.py", line 9, in <module>
    tay = Employee('Taylor Swift', 1985)
  File "company.py", line 7, in __init__
    print('Created', type(self).__name__, repr(name), 'at', hex(id(self)))
TypeError: 'int' object is not callable

응? 내가 잉트를 어디로 부르려고 하는 거지?그건 모두 기본적으로...

이름을 지었더라면badge_id또는id_이런 문제는 없었을 겁니다.

기본 제공 함수의 이름을 따서 변수 이름을 지정하는 것은 좋지 않습니다.그 이유 중 하나는 이름이 재정의되었는지 모르는 독자에게 혼동을 줄 수 있기 때문입니다.

id는 Python에 내장된 함수입니다.값 할당id기능을 재정의합니다.에서와 같이 접두사를 추가하는 것이 가장 좋습니다.some_id또는 그것을 다른 대문자로 사용합니다.ID.

기본 제공 함수는 단일 인수를 사용하고 전달한 개체의 메모리 주소(CPython)에 대한 정수를 반환합니다.

>>> id(1)
9787760
>>> x = 1
>>> id(x)
9787760

왜냐하면 그것은 내장된 기능의 이름이기 때문입니다.

python은 동적 언어이기 때문에 변수와 함수에 같은 이름을 부여하는 것은 보통 좋은 생각이 아닙니다. id()는 python의 함수이므로 id라는 이름의 변수는 사용하지 않는 것이 좋습니다.사용할 수 있는 모든 기능에 적용된다는 점을 염두에 두고 있습니다.변수의 이름이 함수와 동일하면 안 됩니다.

언급URL : https://stackoverflow.com/questions/77552/id-is-a-bad-variable-name-in-python