list.__iadd__과 list.__add__ 간의 동작 불일치
다음 스니펫을 고려하세요.
<code class="python">x = y = [1, 2, 3, 4] x += [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4, 4]</code>
반대로 , 다음 사항을 확인하세요.
<code class="python">x = y = [1, 2, 3, 4] x = x + [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4]</code>
이 두 코드 조각이 다르게 동작하는 이유는 무엇입니까?
설명
주요 차이점은 " " 연산자. 첫 번째 코드 조각에서:
x = [4]는 목록 클래스의 __iadd__ 메서드를 사용합니다. 이 메서드는 다음과 같습니다.
이렇게 하면 x와 y가 모두 값을 포함하도록 수정됩니다. 4.
그러나 두 번째 스니펫에서 x = x [4]는 __add__ 메서드를 사용합니다.
따라서 x의 값은 [1, 2 , 3, 4, 4] y는 여전히 원래 값 [1, 2, 3, 4]을 유지합니다.
위 내용은 `list.__iadd__`는 원래 목록과 할당된 목록을 모두 수정하는 반면 `list.__add__`는 할당된 목록만 수정하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!