두 개의 개별적으로 작성된 변경 가능 목록에는 다른 ID가 있습니다.두 개의 개별적으로 생성 된 불변 개체가 동일한 id 및 변경 가능한 개체를 갖는 이유는 둘 다 서로 다른 값을 참조하는 이유는 무엇입니까?
파이썬 SHELL : (변경 가능)
>>> mylist = ['spam', 'eggs']
>>> yourlist = ['spam', 'eggs']
>>> id(mylist), id(yourlist)
(49624456, 48910408)
이 개별적으로 만들어 불변의 문자열이 유사한 ID를 가지고 있지만.
파이썬 SHELL : (불변)
>>> a = 10
>>> b = 10
>>> id(a), id(b)
(507099072, 507099072)
가 같은 객체를 참조 a
및 b
인가? 없다면 왜 ID가 비슷한가? mylist
및 yourlist
이 다른 객체를 참조합니까? 그렇다면 다른 ID를 사용하는 이유는 무엇입니까?
변경 가능한 개체가 이러한 이유로 변형 될 수 있으므로 목록이 두 번 생성되지만 두 목록의 요소 0의 ID를 확인하면 동일해야합니다. 리스트가 변경 가능하기 때문에리스트 내의 모든 "셀"이 같은 "불변"객체를 가리키더라도 list가 동일한 객체를 가리 키도록 기대할 수는 없습니다. 변경할 수없는 객체는 그 이유 때문에 변형 될 수 없으며, 파이썬은이를 최적화하여 중복을 방지 할 수 있습니다. –