list.extend와 list.iadd의 차이
재밌는 글을 봤다. list.extend와 list.iadd는 표면적으로는 동일해 보인다. 그런데 함수 내에서 global 변수를 바꾸려고 하면 동작이 달라진다. 에러는 global 변수를 바꾸려고 했다는, 흔히 볼 수 있는 에러이다.문제는 왜 두 개가 다르냐는 것인데, x += something은 객체의 iadd 메서드를 호출하는 것인데, 사실 아래의 코드가 실행된다. x = x.__iadd__(something) 여기서 assignment가 문제가 된다. 흥미로운 점은, 아래 코드는 문제 없이 잘 돈다. 여기에는 assignment가 없기 때문이다. x += something은 __iadd__를 호출하고, __iadd__는 self를 반환하므로, x += something은 x의 객체가 바뀌..
python
2024. 7. 7. 18:47