파이썬에는 변경가능한 객체(mutable) 과 변경불가능한 객체(immutable) 이 있습니다.
변경가능한 객체에는 리스트(list)와 딕셔너리(dict) 이 있습니다.
변경불가능한 객체에는 일반적인 자료형 int, string 등 과 튜플(tuple) 등이 있습니다.
일반적인 자료형이 속해있는 변경불가능한 객체(immutable) 부터 알아보겠습니다.
immutable
immutable 은 변경불가능한 객체입니다.
immutable 에는 일반적인 자료형과 튜플이 속해있습니다.
Int
String
Tuple
immutable 에 속한 객체들은 값이 변경이될떄 객체가 변하는것을 확인 할 수 있습니다.
여기에 속한 객체들은 call by value 의 속성을 띄고있습니다.
Int
>>> a = 1
>>> b = a #b = 1
>>> a == b #a = 1 , b = 1
True
>>> b += 1 #b = 2
>>> a == b #a = 1 , b = 2
False
String
>>> a = 'a'
>>> b = a #b = 'a'
>>> a == b #a = 'a' , b = 'a'
True
>>> b += 'b' #b = 'ab'
>>> a == b #a = 'a' , b = 'ab'
False
Tuple
>>> a = (1,2)
>>> b = a #b = (1,2)
>>> a == b #a = (1,2) , b = (1,2)
True
>>> b += (3,) #b = (1,2,3)
>>> a == b #a = (1,2) , b = (1,2,3)
False
immutable 객체들은 값이 변경되는것이 새로운 객체로생성이 되기떄문에 변경이 일어날떄 기존 객체는 변하지 않습니다.
mutable
mutable은 변경 가능한 객체입니다.
mutable에는 리스트와 딕셔너리 등이 속합니다.
List
Dict
>>> a = {1:'a'} #a = {1:'a'}
>>> id(a)
1985209931096
>>> a[2] = 'b' #a = {1:'a', 2:'b'}
>>> id(a)
1985209931096
mutable 에 속한 객체들은 값이 변경이 일어날떄 객체의 값이 변경되는것을 확인 할 수 있습니다.
여기에 속한 객체들은 call by reference 속성을 가지고 있습니다.
List
>>> a = [1,2]
>>> b = a #b = [1,2]
>>> a == b #a = [1,2] , b = [1,2]
True
>>> b.append(3) #b = [1,2,3]
>>> a == b #a = [1,2,3] , b = [1,2,3]
True
Dict
>>> a = {1:'a'}
>>> b = a #b = {1:'a'}
>>> a == b #a = {1:'a'} , b = {1:'a'}
True
>>> b[2] = 'b' #b = {1:'a',2:'b'}
>>> a == b #a = {1:'a',2:'b'} , b = {1:'a',2:'b'}
True
mutable 객체들은 값의 변경이 일어날떄 주소가 참조하는 값이 모두 변경되는것을 확인 할 수 있습니다.
'Python' 카테고리의 다른 글
[Python]파이썬 람다(lambda)함수(람다식/익명함수) (0) | 2019.02.25 |
---|---|
[Python]파이썬 맵,필터,리듀스(map,filter,reduce) (0) | 2019.02.22 |
[Python]파이썬 UUID(GUID) 만들기 (0) | 2019.02.12 |
[Python]파이썬 간단api만들기(Flask) (0) | 2019.02.01 |
[Python]파이썬 가상환경 등록(venv) (0) | 2019.01.30 |