250901
파이썬 핵심 개념 정리: 철학부터 동작 원리까지
파이썬을 공부하며 알게 된 핵심적인 개념과 그 이면에 있는 설계 철학을 정리합니다. 단순한 문법을 넘어 파이썬이 '왜' 이렇게 동작하는지 이해하는 데 초점을 맞춥니다.
1. 파이썬의 4가지 핵심 타입 시스템 특징
### 동적 타이핑 (Dynamic Typing)
변수의 타입이 코드가 실행되는 시점(런타임)에 결정됩니다.
변수는 특정 타입에 묶이지 않고, 다양한 타입의 객체를 가리킬 수 있는 '이름'일 뿐입니다.
a = 10이후a = "hello"가 가능한 이유입니다.
### 강한 타이핑 (Strongly Typed)
서로 다른 타입 간의 암시적(자동) 변환을 엄격하게 제한합니다.
10 + "20"과 같이 타입이 맞지 않는 연산은TypeError를 발생시켜 예기치 않은 버그를 방지합니다.
### 덕 타이핑 (Duck Typing)
"오리처럼 걷고, 오리처럼 꽥꽥거리면, 그것은 오리일 것이다."
객체의 실제 클래스 타입보다는, 그 객체가 어떤 메서드나 속성을 가지고 있는지가 더 중요합니다. 객체가 필요한 행동(
fly())을 할 수만 있다면 타입은 문제 삼지 않습니다.
### 점진적 타이핑 (Gradual Typing)
name: str와 같이 타입 힌트(Type Hint)를 코드에 선택적으로 추가할 수 있습니다.이 힌트는 파이썬 실행기(인터프리터)에 의해 무시되며, 오직
mypy와 같은 정적 분석 도구나 개발자의 가독성을 위해 사용됩니다.
2. 변수, 객체, 그리고 메모리
### 모든 것은 객체 (Everything is an Object)
파이썬에서는 숫자, 문자열, 함수 등 모든 것이 속성과 메서드를 가진 객체입니다.
10이라는 단순한 값조차도int클래스의 객체입니다.최적화: 자주 사용하는 작은 정수(-5 ~ 256) 등은 미리 만들어두고 재사용하여(인터닝) 효율성을 높입니다.
### 변수는 이름일 뿐 (Variables are Just Names)
변수는 데이터를 담는 상자가 아니라, 메모리에 생성된 객체에 붙이는 '이름표' 입니다.
a = 10은a라는 이름표를10객체에 붙이는 행위입니다.a자체가 타입을 갖는 것이 아닙니다.
### 메모리 관리 (Garbage Collection)
객체를 가리키는 이름표(참조)가 하나도 없게 되면, 가비지 컬렉터(Garbage Collector) 가 해당 객체를 메모리에서 자동으로 제거합니다.
주된 방식은 참조 횟수 계산(Reference Counting) 이며, 순환 참조 문제를 해결하기 위한 별도의 알고리즘이 보조적으로 동작합니다.
3. 파이썬의 독특한 설계: bool과 int의 관계
파이썬에서
bool타입은int타입을 상속받은 자식 클래스입니다.이는 과거
0과1로 참/거짓을 판단하던 코드와의 역호환성을 위한 실용적인 선택이었습니다.그 결과,
True는1과,False는0과 완전히 동일하게 취급될 수 있습니다.print(True == 1) # True print(False == 0) # True print(10 + True) # 11