더북(TheBook)

1.4 순환 중 객체 변형

순환 중인 객체를 변형시키면 안 됩니다. 때로는 잘못된 결과가 발생하지 않고 순환을 벗어날 수도 있지만, 그래도 나쁜 습관입니다.

가장 먼저 주목해야 할 점은 일부 파이썬 객체가 불변(immutable)이라는 것입니다. 예를 들어 str, bytes, tuple, frozenset 객체를 순환하는 경우 이와 같은 기본 컬렉션이 변형되는 문제는 발생하지 않습니다.

그럼에도 불구하고 많은 파이썬 객체들은 가변(mutable)임과 동시에 반복 가능(iterable)합니다. 대표적인 객체로 list, dict, set, bytearray가 있지만 사용자 정의 객체나 제3자 객체도 이에 해당할 수 있습니다. 순환 중인 객체를 변형시키려고 하면 여러 가지 면에서 문제를 일으킬 수 있습니다.

불변 객체의 기본 순환

>>> s = "Mary had a little lamb!"
>>> for c in s:
...     if c <= "s":
...         print(c, end="")
... print()
Mar had a lile lamb!
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.