파이썬에서 변수란 값을 저장하는 공간을 가리키는 레퍼런스입니다. 다음과 같이 a
라는 변수가 메모리에 저장된 1
을 가리키도록 할 수 있습니다.
a = 1
이렇게 하면 메모리에 값 1
을 갖는 객체가 생성되며, a
는 메모리가 저장된 위치를 가리키는 레퍼런스가 됩니다.
이때, 1
은 단순한 상수가 아닌 정수형 객체에 해당합니다. 다음의 경우에서 a
와 b
라는 서로 다른 변수는 동일한 객체를 가리키고 있습니다. 즉, 특정 값을 갖는 객체가 메모리에 생성되어 있는 것입니다.
a = 1
b = 1
a is b
# True
다음과 같이 리스트를 가리키는 변수가 있다고 해보겠습니다.
a = [1, 2, 3]
b
라는 변수가 a
와 동일한 객체를 가리키게 하려면 b = a
를 활용할 수 있습니다.
b = a
b
# [1, 2, 3]
a is b
# True
이러한 상황에서 a
에 할당된 값을 업데이트하면 b
가 가리키는 값도 업데이트됩니다. 이는 두 변수가 동일한 객체를 가리키고 있기 때문입니다.
a[2] = 4
a
# [1, 2, 4]
b
# [1, 2, 4]
a is b
# True
만약, 동일한 값을 갖되 이를 다른 객체에 할당하고자 할 때는 다음과 같이 [:]
를 활용할 수 있습니다.
a = [1, 2, 3]
b = a[:]
a
# [1, 2, 3]
b
# [1, 2, 3]
a is b
# False
b = a[:]
은 a
의 값을 모두 복사하여 b
에 새롭게 할당하는 것입니다. 이제 a
의 값을 업데이트해도 b
의 값은 변경되지 않습니다. 서로 다른 객체를 가리키고 있기 때문입니다.
a[2] = 4
a
# [1, 2, 4]
b
# [1, 2, 3]
이상으로 변수란 값을 저장하는 메모리 공간을 가리키는 레퍼런스임을 확인해봤는데요.
다음과 같이 del()
함수를 사용하면, 이를 삭제할 수 있습니다.
a = [1, 2, 3]
del(a)
a
# NameError: name 'a' is not defined
'개발 > Python' 카테고리의 다른 글
파이썬 조건문 설명: if, else, elif (0) | 2021.12.06 |
---|---|
파이썬 집합 자료형 설명 (0) | 2021.12.02 |
파이썬 딕셔너리 설명: 키, 값, 함수 (0) | 2021.12.01 |