변수, 객체, 그리고 값
파이썬에서는 모든 것이 객체다. 변수도 객체고, 함수도 객체고, 심지어 코드도 객체다.
모든 객체는 ID, 타입, 그리고 값을 가진다. ID는 객체의 인스턴스가 자지는 고유 식별자이며 변경될 수 없는 값이다. 타입은 객체의 자료형이며 이 또한 변경될 수 없다. 값은 객체의 내용이다.
a = 3
print(id(a)) # ID
print(type(a)) # 타입
print(a) #값
값을 변경할 수 있는 것을 mutable 객체라 하고, 값을 변경할 수 없는 것을 immutable 객체라고 한다. 대부분의 기본 타입들은 immutable 이다. 숫자, 문자열, 튜플은 변경할 수 없는 객체이고, 리스트, 딕셔너리 등은 변경가능한 객체이다.
a = 3
print(id(a)) # 1799077480
a = 4
print(id(a)) # 1799077496
a = 3
print(id(a)) # 1799077480
위 코드와 같이 변수의 값을 변경하는 경우에, 실제로는 변수가 가르키는 대상이 바뀌는 것이다.
3을 가리키면 '그것'은 3이되고 4를 가리키면 '그것'은 4가 되는지라, 3은 3이요 4는 4이니라.
명시적으로 변수를 메모리에서 해제하려면 del() 함수를 사용하면 되는데, 파이썬에서는 가비지컬렉션이 작동하므로 굳이 쓸 일은 없다.
댓글
댓글 쓰기