더북(TheBook)

정수 재사용(Integer interning)

>>> a = 5
>>> b = 2 + 3
>>> a == b, a is b
(True, True)
>>> c = 1_000_000
>>> d = 999_999 + 1
>>> c == d, c is d
(True, False)

문자열 재사용(String interning)

>>> e = "foobar"
>>> f = "foo" + "bar"
>>> e == f, e is f
(True, True)
>>> g = "flimflam"
>>> h = ".join(["flim", "flam"])
>>> g == h, g is h
(True, False)

그러나 파이썬은 이러한 상황에서 값 대신 이름에 의한 연결(binding by name)을 사용합니다. 따라서 변수에서 실제로 사용되는 값은 클로저 함수가 생성될 때 가지고 있던 값이 아니라, 호출될 때 최종적으로 가지고 있는 값입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.