[Python]가변객체,불변객체

박현희·2020년 8월 25일
1

Python

목록 보기
1/8

객체

파이썬의 모든 데이터 타입들은 객체(objecrt) 입니다.
객체 단위로 메모리 상에서 정보를 관리 하는데요, 이 객체에는 3가지 특성이 있습니다.
바로 값(value),유형(type),정체성(id) 입니다.

  • 값(value) : 메모리에 기록된 내용. 가변 객체는 값이 변할 수 있지만 불변 객체는 변하지 않는다.
  • 유형(type) : type() 함수를 통해 객체의 유형을 알 수 있으며 데이터의 종류를 보여준다.
  • 정체성(identity) : id() 함수를 통해 알 수 있으며 각각의 객체를 식별하기 위한 고유번호(메모리 상에 위치한 주소 값)를 말한다.

year = 1789  # 객체를 만들어 변수에 대입

>>> year         # 객체의 값 (객체 자신) 구하기
1789

>>> type(year)   # 객체의 유형 구하기
<class 'int'>

>>> id(year)     # 객체의 정체성 (고유번호) 구하기
140711867085328

가변객체와 불변객체

  • 가변객체 : 객체에 할당된 값을 수정할 수 있다.
  • 불변객체 : 객체에 할당된 값을 수정할 수 없다.
데이터 타입
가변(mutable)list, set, dict
불변(immutable)int, float, bool, tuple, string, unicode

가변 객체 예시

List

list = [1, 2, 3, 4]
print(list)
# [1, 2, 3, 4]

list[1] = 222
print(list)
# [1, 222, 3, 4]

불변 객체 예시

tuple

tuple = (1, 2, 3, 4)
print(tuple)
# (1, 2, 3, 4)

tuple[1] = 222

"""
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    immutable_tuple[1] = 222
TypeError: 'tuple' object does not support item assignment
"""

tuple의 요솟값을 변경할 수 없기 때문에 새로운 tuple 인스턴스를 같은 이름의 변수에 할당하는 방법으로 변수가 가리키는 대상을 바꿔야 합니다.

tuple = (1, 2, 3, 4)
print(tuple)
# (1, 2, 3, 4)

tuple = (1, 222, 3, 4)
print(tuple)
# (1, 222, 3, 4)
 

주의!

문자열(string)은 불변 객체이다.

a = "hyunhee"
a[1] = "i"
"""
Traceback (most recent call last):
  File "main.py", line 2, in <module>
    immutable_string[0] = "Y"
TypeError: 'str' object does not support item assignment
"""

문자열의 값을 변경하고 싶다면 새로운 문자열을 만들어야 합니다.

1개의 댓글

comment-user-thumbnail
2023년 12월 4일

Nice comment on this blog

답글 달기