[python study note] 가변타입, 불변타입, 절차 지향 프로그래밍
Mutable Type, Immutable Type, Procedural Programming
Table of contents
1. 파이썬은 순수 객체 지향 언어
파이썬의 모든 것이 객체라는 뜻
숫자열이나 문자열 등이 모두 어떤 클래스의 인스턴스 이다.
2. 가변 타입 객체 vs 불변 타입 객체
가변 타입 객체 : 한번 생성한 인스턴스의 속성 변경 가능. ex)리스트
클래스 불변 타입 객체 : 한번 생성한 인스턴스의 속성 변경 불가. ex)튜플 클래스
어떤 타입이냐에 따라 같은 상황에서도 다른 결과가 나온다.
mutable_object = [1, 2, 3]
immutable_object = (1, 2, 3)
#리스트의 0번째 요소를 4로 바꿈
mutable_object[0] = 4
print(mutable_object) #[4, 2, 3]
#=> 리스트 인스턴스는 생성되고 나서도 속성을 바꿀 수 있다.
immutable_object[0] = 4
print(immutable_object) #TypeError: 'tuple' object does not support item assignment
# => 튜플은 불변타입 이기 때문에 변경 불가능
불편타입 : 변수가 가리키는 객체 자체는 바꿀 수 있다.
가변 : list(리스트), dict(딕셔너리)
불변 : bool(불린), int(정수), float(실수), str(문자열), tuple(튜플)
위의 파이썬의 기본 클래스 말고 직접 작성하는 클래스는 가변 타입이다.
인스턴스 변경 시 원래 인스턴스 속성을 바꾸면 된다.
3. 절차 지향 프로그래밍
객체 지향 프로그래밍과 달리 객체라는 개념이 없다.
대신 절차 지향 프로그래밍에도 함수라는 개념은 있다.
함수는 순서대로 특정 명령어들을 실행하는 부분을 하나로 묶은 것
객체 지향 프로그래밍은 필요한 동작 뿐만 아니라 아예 연관된 데이터도 객체로 묶어서 하나의 클래스로 나타낸다.
즉, 절차 지향 프로그래밍에서는 프로그램 안에서 서로 관련된 동작들만을 묶어서 관리하는데 객체 지향 프로그래밍에서는 관련된 동작들을 관련된 데이터와도 함께 묶어서 관리하는 것.
절차 지향 프로그래밍과 객체 지향 프로그래밍의 차이
절차 지향 프로그래밍
프로그램을 만들 때 데이터와 함수를 합칠 수 없다.
프로그램을 명령어들을 순서대로 실행하는 것으로 본다.
객체 지향 프로그래밍
프로그램을 만들 때 데이터와 함수를 합칠 수 있다.
프로그램을 객체들이 순서대로 소통하는 과정으로 본다.