Skip to main content

Command Palette

Search for a command to run...

250901

Published
2 min readView as Markdown

파이썬 핵심 개념 정리: 철학부터 동작 원리까지

파이썬을 공부하며 알게 된 핵심적인 개념과 그 이면에 있는 설계 철학을 정리합니다. 단순한 문법을 넘어 파이썬이 '왜' 이렇게 동작하는지 이해하는 데 초점을 맞춥니다.

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 = 10a라는 이름표를 10 객체에 붙이는 행위입니다. a 자체가 타입을 갖는 것이 아닙니다.

### 메모리 관리 (Garbage Collection)

  • 객체를 가리키는 이름표(참조)가 하나도 없게 되면, 가비지 컬렉터(Garbage Collector) 가 해당 객체를 메모리에서 자동으로 제거합니다.

  • 주된 방식은 참조 횟수 계산(Reference Counting) 이며, 순환 참조 문제를 해결하기 위한 별도의 알고리즘이 보조적으로 동작합니다.


3. 파이썬의 독특한 설계: boolint의 관계

  • 파이썬에서 bool 타입은 int 타입을 상속받은 자식 클래스입니다.

  • 이는 과거 01로 참/거짓을 판단하던 코드와의 역호환성을 위한 실용적인 선택이었습니다.

  • 그 결과, True1과, False0과 완전히 동일하게 취급될 수 있습니다.

      print(True == 1)  # True
      print(False == 0) # True
      print(10 + True)  # 11
    

More from this blog

250902

LeetCode의 "Count Substrings That Satisfy K-Constraint I" 문제를 처음 접했을 때, 저는 일단 완전탐색(브루트포스) 방식으로 접근했습니다. 이중 for문을 돌면서 모든 substring을 만들고 각각의 0, 1의 개수를 직접 세는 방식이었죠. 하지만 입력이 조금만 커져도 금방 TLE가 뜰 정도로 매우 느렸고, 효율적인 방법이 필요하다는 사실을 절감했습니다. 이때 누적합(Prefix Sum)이라는 방식을...

Sep 2, 20255 min read

250829

터미널 환경 마스터하기: Python 가상환경부터 PATH의 비밀까지 Python 코딩 연습 플랫폼 Exercism을 CLI로 시작하면서 마주친 여러 궁금증을 해결한 과정을 기록합니다. 이 과정에서 Python 가상환경의 올바른 사용법, VS Code와 터미널의 연동, 그리고 가장 중요하게는 PATH 환경 변수의 동작 원리를 깊이 이해할 수 있었습니다. 1. Python 프로젝트와 가상 환경: uv 활용법 Python 프로젝트를 시작할 때, 의...

Aug 29, 20253 min read

250828

시작: 작은 혼란과 한 번의 실수 모든 것은 uv라는 새로운 파이썬 도구를 사용해보려던 시도에서 시작됐다. uv venv와 uv init, 두 가지 워크플로우 앞에서 나는 혼란스러웠고, 기존에 쓰던 방식을 정리하기로 했다. 그리고 바로 그때, 나는 실수를 저질렀다. 가상 환경을 deactivate 하지 않은 채, rm -rf .venv 명령어로 폴더를 통째로 삭제해버렸다. 터미널 프롬프트에는 여전히 (.venv)가 떠 있었다. 하지만 실제 ...

Aug 28, 20253 min read

250827

Python 개발 환경 완벽 가이드: 최종 정리본 🚀 이 문서는 파이썬 개발 환경을 구성하는 다양한 도구들의 역할과 상호작용, 그리고 현대적인 개발 워크플로우를 처음부터 끝까지 체계적으로 정리한 종합 가이드입니다. 1. 근본적인 질문: 왜 이렇게 복잡할까? 🤔 파이썬 개발 환경 설정의 모든 복잡성은 두 가지 핵심 문제를 해결하기 위해 존재합니다. 버전 충돌: 프로젝트 A는 파이썬 3.9, 프로젝트 B는 파이썬 3.12가 필요한 상황. 의...

Aug 27, 20253 min read

TIL: Today I Learning

9 posts