Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 id() 함수 완벽 정리 – 객체 고유 식별자의 개념과 활용법

이 글에서는 파이썬 3.x 버전에서 id() 함수의 사용법과 동작 원리에 대해 자세히 알아봅니다. id() 함수는 파이썬 표준 라이브러리에 기본으로 포함되어 있으며, 코드 실행 전에 자동으로 임포트되기 때문에 별도의 import 문 없이 바로 사용할 수 있습니다.

id() 함수란?

문법: id(<객체 이름>)

반환값: <int> 타입의 고유 식별자(identity) 값

id() 함수는 정확히 하나의 인수만 받습니다. 즉, 식별자를 확인하고자 하는 객체의 이름을 인수로 전달하면 됩니다. 반환되는 id 값은 동일한 데이터를 참조하는 경우를 제외하고 모든 객체마다 고유합니다.

id 값은 본질적으로 메모리상의 주소를 나타내며, 파이썬 내부적으로 활용됩니다. 참고로 CPython 구현에서는 id 값이 실제 객체의 메모리 주소와 일치합니다.

예제 코드

str_1 = "Tutorials"
print(id(str_1))
str_2 = "Tutorials"
print(id(str_2))

# 문자열 값이 동일하므로 True 반환
print(id(str_1) == id(str_2))

# 문자열 결합으로 값이 달라졌으므로 False 반환
str_1 = str_1 + str_2
print(id(str_1) == id(str_2))

# 두 변수가 같은 객체를 참조하므로 True 반환
str_2 = str_1
print(id(str_1) == id(str_2))

실행 결과

46939355256048
46939355256048
True
False
True

결과 분석

첫 번째 비교: 두 문자열 변수 str_1str_2가 동일한 데이터를 담고 있어 파이썬이 같은 객체를 재사용(인터닝)하기 때문에 bool 값 True가 출력됩니다.

두 번째 비교: 문자열 연결(concatenation) 연산으로 str_1의 내용이 변경되어 새로운 객체가 생성되었기 때문에 False가 출력됩니다.

세 번째 비교: str_2 = str_1 대입으로 두 변수가 완전히 동일한 객체를 참조하게 되었으므로 True가 출력됩니다.

정리

이 글에서는 파이썬 3.x에서 id() 함수의 문법, 반환값, 그리고 실제 예제를 통해 객체의 고유 식별자가 어떻게 동작하는지 살펴보았습니다. id 값은 메모리 주소와 밀접한 관련이 있으며, 두 변수가 같은 객체를 공유하는지 판단할 때 유용하게 활용할 수 있습니다. 불변(immutable) 객체인 문자열의 인터닝 동작과 함께 이해하면 파이썬의 객체 참조 모델을 더 깊이 파악하는 데 큰 도움이 됩니다.