나는 인터프리터에서 방금 놀고 있었고 이해할 수없는 것을 발견했다. 하나의 요소로리스트를 가진 튜플을 생성하고 그리스트를 업데이트하려고하면 이상한 일이 발생합니다. 예를 들어, 내가 실행할 때이 :튜플 내에서 목록 업데이트
tup = (1,2,3,[4,5])
tup[3] += [6]
내가 얻을 :
내가 예상 정확히 무엇TypeError: 'tuple' object does not support item assignment
. 내가 다시 튜플을 참조 할 때 다음, 내가 얻을 : 그래서 목록이 사실 파이썬은 예외가 발생했습니다에도 불구하고 업데이트 된
>>> tup
(1, 2, 3, [4, 5, 6])
. 어떻게 작동합니까? 나는 이런 식으로 실제로하고 싶은 시나리오를 상상할 수는 없지만 아직도 어떤 일이 벌어지고 있는지 이해하고 싶습니다. 고맙습니다.
나는 확장이 단지'tup [3] .__ iadd __ ([6])이 아니기 때문에 그것이 도움이 될 것이라고 생각합니다. 'tup [3] = tup [3] .__ iadd __ ([6])'입니다. 'list .__ iadd__'가 돌연변이를 일으키는 것과 똑같은 객체를 반환하는 것이 편리합니다. – zondo
문서 링크를 가져 주셔서 감사합니다! 그것은 큰 도움이됩니다. –
감사합니다. 전 문서에서이 문제를 발견하지 못했습니다. 따라서이 튜토리얼에 대한 이해를 돕기 위해 기본적으로 tup [3] .__ iadd __ ([6])을 수행하고 있으므로 파이썬에서 튜플에 대한 항목 할당을 시도했기 때문에 목록이 업데이트됩니다. 그래서 나는 그것이 실패했다고 말하는 예외를 얻었지만 그 시점까지 우리는 이미 목록을 갱신 했습니까? –