정수 재사용(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)을 사용합니다. 따라서 변수에서 실제로 사용되는 값은 클로저 함수가 생성될 때 가지고 있던 값이 아니라, 호출될 때 최종적으로 가지고 있는 값입니다.