>  기사  >  백엔드 개발  >  `list.__iadd__`와 `list.__add__`의 차이점은 무엇이며 Python에서 목록을 수정할 때 왜 다른 결과가 발생합니까?

`list.__iadd__`와 `list.__add__`의 차이점은 무엇이며 Python에서 목록을 수정할 때 왜 다른 결과가 발생합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 08:55:02659검색

What is the difference between `list.__iadd__` and `list.__add__` and why does it lead to different results when modifying lists in Python?

list.__iadd__와 list.__add__의 차이점 이해

Python에서 객체는 상호 작용을 지원하기 위해 특별한 "마법의" 메서드를 정의할 수 있습니다. 특정 운영자와 함께. 이러한 두 가지 메소드는 각각 내부 추가 작업과 일반 추가 작업에 사용되는 iadd 및 __add__입니다.

다음 두 코드 조각을 고려하세요.

<code class="python"># Example 1
x = y = [1, 2, 3, 4]
x += [4]
print(x)  # [1, 2, 3, 4, 4]
print(y)  # [1, 2, 3, 4, 4]

# Example 2
x = y = [1, 2, 3, 4]
x = x + [4]
print(x)  # [1, 2, 3, 4, 4]
print(y)  # [1, 2, 3, 4]</code>

왜 해야 할까요? 이 두 예는 다르게 동작하나요?

두 경우 모두 두 개의 동일한 목록 x와 y로 시작하고 x = [4] 또는 x = x [4]를 사용하여 덧셈 연산을 수행합니다.

x = [4]를 사용하면 Python의 __iadd__ 메서드가 호출되어 내부 추가를 수행합니다. 이는 원래 목록 x가 변경되고 해당 내용이 목록 [4]의 요소로 업데이트됨을 의미합니다. 결과적으로 이제 x와 y 모두 동일한 수정된 목록을 포함합니다.

반대로 x = x [4]를 사용하면 Python의 __add__ 메서드가 호출되어 두 x의 요소가 포함된 새 목록을 반환합니다. 그리고 [4]. 원래 목록 x는 변경되지 않고 그대로 유지되며 y는 여전히 수정되지 않은 초기 목록을 가리킵니다.

위 내용은 `list.__iadd__`와 `list.__add__`의 차이점은 무엇이며 Python에서 목록을 수정할 때 왜 다른 결과가 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.