[Python기초] 9. 가변형과 불변형
가변형(mutable)
- 변경이 자유로운 형식
- 리스트, 딕셔너리
>>> lst = [1, 2, 3] >>> lst.append(4) # 추가 >>> lst.remove(4) # 삭제
가변형 데이터의 원본 보호
- 가변형의 경우 함수의 인자로 전달되면, 내부에서 값을 변경했을 때 외부에서도 그 결과를 그대로 볼 수 있음
>>> def change(x): x[0] = 'H' # 리스트는 변경이 가능 >>> wordlist = ['J', 'A', 'M'] >>> change(wordlist) >>> wordlist ['H', 'A', 'M'] >>> def change(x): x = x[:] # x의 값을 복사해서 새로운 로컬 변수 x에 입력 x[0] = 'H' return None >>> wordlist = ['J', 'A', 'M'] >>> change(wordlist) >>> wordlist ['J', 'A', 'M'] # 복사해서 사용하면 변경 안됨
불변형(immutable)
- 값을 초기화 하면 변경이 불가능
- 정수형, 실수형, 문자열, 튜플
>>> a = 1.2 >>> id(a) 1623611318944 >>> a = 2.3 >>> id(a) 1623611318920 # 새로운 값을 저장한 주소로 변경만 되고 실제 값이 변경되는 것은 아님
불변형의 인자전달
- 파이썬에서 인자(입력되는 매개변수)는 참조(reference)를 이용해 전달
- 변경 가능한 변수와 변경 불가능한 변수일 때 처리 방식이 다름
- 함수 외부에 있는 불변 형식(정수형, 실수형)의 경우 함수 내부에서 접근할 때 읽기만 가능함