Python 자료형
Python 자료형
Python 자료형
파이썬의 자료형은 크게 기본형(Immutable Type) 과 참조형(Mutable Type) 으로 나뉜다.
파이썬에서는 모든 것이 객체(Object)이다.
- 기본형(Immutable Type): 값 자체를 저장하며, 한 번 생성되면 변경할 수 없음
- 참조형(Mutable Type): 값을 변경할 수 있으며, 메모리 주소를 공유할 수 있음
- 기본형은 숫자, 문자열, 튜플과 같이 불변(immutable)한 타입
- 참조형은 리스트, 딕셔너리, 집합과 같이 가변(mutable)한 타입
- 기본형은 연산 시 새로운 객체가 생성되지만, 참조형은 직접 값이 변경됨
- 기본형과 참조형 모두
=
연산자를 사용하면 변수는 실제 값을 가리키는 참조(Reference) 를 저장 - JS, Java와 달리, 파이썬에서는 모든 객체가 스택(Stack)이 아닌 힙(Heap) 메모리에 저장된다.
1. 기본형 (Immutable Type)
자료형 | 설명 | 예제 |
---|---|---|
int | 정수형 | a = 42 |
float | 실수형 | b = 3.14 |
bool | 논리형 | c = True |
str | 문자열 | d = "Python" |
tuple | 튜플 | e = (1, 2, 3) |
- 불변(Immutable): 값이 변경될 수 없으며, 연산 시 새로운 객체가 생성됨
id()
함수를 사용하면 객체의 메모리 주소를 확인할 수 있음- 문자열(
str
)은 자바의String
과 유사하게 불변 객체
2. 참조형 (Mutable Type)
자료형 | 설명 | 예제 |
---|---|---|
list | 리스트 (배열과 유사) | a = [1, 2, 3] |
dict | 딕셔너리 (Key-Value 저장) | b = {"name": "Alice", "age": 25} |
set | 집합 (중복 없는 요소 저장) | c = {1, 2, 3} |
- 가변(Mutable): 값 변경 가능하며, 동일한 객체의 상태를 수정할 수 있음
=
연산자로 복사하면 같은 객체를 참조copy()
나deepcopy()
를 사용하면 별도의 객체를 생성
3. 메모리 저장 방식
구분 | 기본형 (Immutable Type) | 참조형 (Mutable Type) |
---|---|---|
저장 방식 | 값 자체 저장 | 참조(메모리 주소) 저장 |
값 변경 여부 | 변경 불가 (새 객체 생성) | 변경 가능 (같은 객체 수정) |
연산 가능 여부 | 연산 시 새 객체 생성 | 연산 가능, 객체 자체 변경 |
메모리 할당 | 스택(Stack) | 힙(Heap) |
int
,float
,bool
,str
,tuple
은 불변 객체로 값 변경 시 새로운 객체 생성list
,dict
,set
은 가변 객체로 값을 변경해도 같은 객체 유지
4. 함수 호출 시 차이
- 기본형(Immutable Type): 함수 호출 시 값이 복사되어 전달되므로, 원본 변수는 변경되지 않음
- 참조형(Mutable Type): 함수 호출 시 주소가 전달되므로, 내부에서 값을 변경하면 원본 데이터도 변경됨
1
2
3
4
5
6
7
# 참조형 (Mutable Type)
def modify_list(lst):
lst.append(4)
a = [1, 2, 3]
modify_list(a)
print(a) # [1, 2, 3, 4] → 원본 리스트가 변경됨
1
2
3
4
5
6
7
# 기본형 (Immutable Type)
def modify_int(n):
n += 1
b = 10
modify_int(b)
print(b) # 10 → 원본 값이 변경되지 않음
5. 문자열(String)의 특이점
str
은 불변(immutable) 객체이므로, 값을 변경하면 새로운 객체가 생성됨- 문자열 연산 (
+
,*
)을 하면 새로운 문자열 객체가 만들어짐 list(str)
로 변환하면 가변 객체로 변경 가능
1
2
3
4
s = "hello"
print(id(s)) # 문자열의 메모리 주소 확인
s += " world"
print(id(s)) # 새로운 문자열 객체가 생성됨 (주소가 변경됨)
6. 요약
구분 | 기본형 (Immutable Type) | 참조형 (Mutable Type) |
---|---|---|
저장 방식 | 값 자체 저장 | 참조값(주소) 저장 |
값 변경 | 불가능 (새 객체 생성) | 가능 (기존 객체 변경) |
연산 방식 | 연산 시 새 객체 반환 | 연산 시 기존 객체 변경 |
함수 호출 | 값 복사 (원본 영향 없음) | 참조 복사 (원본 변경 가능) |
대표 예시 | int , float , str , tuple | list , dict , set |
정리
- 기본형 (Immutable Type) → 값 자체를 저장하고 복사됨
- 참조형 (Mutable Type) → 주소(참조값)를 저장하고 공유됨
This post is licensed under CC BY 4.0 by the author.