Python의 목록에서 = 연산자가 작동하는 방식
Python의 = 연산자를 목록에 적용하면 예기치 않은 동작이 나타납니다. 이 동작은 iadd와 add 특수 메서드
iadd 간의 차이로 인해 발생합니다. 추가
목록에서의 동작
iadd 메소드를 사용하여 목록에 =를 사용하면 목록은 그 자리에서 수정됩니다. iadd가 정의되지 않은 경우 add가 호출되어 새 목록이 생성됩니다.
예
다음을 고려하세요. 코드:
class foo: bar = [] def __init__(self, x): self.bar += [x] class foo2: bar = [] def __init__(self, x): self.bar = self.bar + [x] f = foo(1) g = foo(2) print(f.bar) print(g.bar) f.bar += [3] print(f.bar) print(g.bar) f.bar = f.bar + [4] print(f.bar) print(g.bar) f = foo2(1) g = foo2(2) print(f.bar) print(g.bar)
출력
[1, 2] [1, 2] [1, 2, 3] [1, 2, 3] [1, 2, 3, 4] [1, 2, 3] [1] [2]
설명
결론
목록에서 =의 동작은 iadd 또는 add__를 호출하는지 여부에 따라 달라집니다. 내부 수정은 __iadd__를 사용하여 발생하며 __add는 새 목록을 생성합니다.
위 내용은 Python의 = 연산자는 __iadd__ 및 __add__에 따라 목록에 어떻게 차별적으로 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!