Ch 1.1 파이썬(Python) 개요
대상 버전: Python 3.12+ 공식 문서: Python 공식 문서 (한국어)
파이썬은 1991년 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어입니다. 오늘날 AI/ML, 웹 개발, 데이터 분석, 자동화 등 사실상 모든 분야에서 활용되며, 전 세계에서 가장 인기 있는 언어 중 하나로 자리 잡았습니다.
1. 파이썬이란?
파이썬(Python)이라는 이름은 뱀에서 따온 것이 아닙니다. 귀도 반 로섬이 영국 BBC 코미디 프로그램 "Monty Python's Flying Circus" 의 팬이었기 때문에 붙여진 이름입니다. 짧고 기억하기 쉬우며, 재미있는 이름을 원했다고 합니다.
- 창시자: 귀도 반 로섬 (Guido van Rossum), 네덜란드 출신 프로그래머
- 최초 릴리스: 1991년 (Python 0.9.0)
- 현재 관리: Python Software Foundation (PSF)
- 라이선스: PSF License (오픈소스, 상업적 이용 가능)
# 파이썬의 철학을 보여주는 간단한 예제
# 읽기 쉽고, 간결하며, 명확한 코드
names = ["Alice", "Bob", "Charlie"]
for name in names:
print(f"안녕하세요, {name}님!")
2. 파이썬의 4가지 주요 특징
특징 1: 뛰어난 가독성과 들여쓰기 문법
파이썬은 중괄호({}) 대신 들여쓰기(indentation) 로 코드 블록을 구분합니다. 코드가 마치 영어 산문처럼 읽힙니다.
# Java나 C라면 중괄호가 필요하지만, 파이썬은 들여쓰기로 블록 표현
def greet(name: str) -> str:
if name:
return f"Hello, {name}!"
else:
return "Hello, stranger!"
print(greet("Python")) # Hello, Python!
특징 2: 인터프리터 언어
파이썬은 인터프리터(Interpreter) 언어입니다. 소스코드를 컴파일 없이 한 줄씩 즉시 실행할 수 있습니다.
- 컴파일 단계 없이 코드 작성 즉시 실행 가능
- REPL(Read-Eval-Print Loop) 환경에서 대화형 실행 지원
- 빠른 프로토타이핑과 실험에 유리
특징 3: 멀티 패러다임 지원
파이썬은 여러 프로그래밍 패러다임을 지원합니다.
# 절차적 프로그래밍
def add(a, b):
return a + b
# 객체지향 프로그래밍
class Calculator:
def add(self, a, b):
return a + b
# 함수형 프로그래밍
from functools import reduce
result = reduce(lambda a, b: a + b, [1, 2, 3, 4, 5])
print(result) # 15
특징 4: 거대한 생태계 (PyPI)
PyPI(Python Package Index) 에는 50만 개 이상의 패키지가 등록되어 있습니다. pip install 명령 하나로 거의 모든 기능을 바로 사용할 수 있습니다.
3. Python 2 vs Python 3
Python 2는 2020년 1월 1일부로 공식 지원 종료(EOL, End of Life) 되었습니다. 현재는 Python 3.x가 유일한 표준입니다.
| 구분 | Python 2 | Python 3 |
|---|---|---|
print | print "hello" (문) | print("hello") (함수) |
| 정수 나눗셈 | 5 / 2 = 2 | 5 / 2 = 2.5 |
| 문자열 기본 | ASCII | Unicode (UTF-8) |
range() | 리스트 반환 | 이터레이터 반환 |
| EOL | 2020년 1월 | 현재 지원 중 |
# Python 3에서의 올바른 사용법
print("Hello, World!") # 함수 형태
result = 5 / 2 # 2.5 (실수 나눗셈)
integer_div = 5 // 2 # 2 (정수 나눗셈)
text = "파이썬은 유니코드를 기본 지원합니다 🐍"
print(text)
4. 주요 버전 타임라인
| 버전 | 출시 연도 | 주요 기능 |
|---|---|---|
| Python 3.8 | 2019 | Walrus 연산자(:=), f-string 디버깅(f"{x=}") |
| Python 3.9 | 2020 | list[int] 직접 타입 힌트, 딕셔너리 병합(|) |
| Python 3.10 | 2021 | match-case 구문 (패턴 매칭), int | str 유니온 타입 |
| Python 3.11 | 2022 | 최대 60% 성능 향상, 향상된 오류 메시지 |
| Python 3.12 | 2023 | 타입 시스템 개선, f-string 완전 개편, @override 데코레이터 |
| Python 3.13 | 2024 | 인터프리터 개선, REPL 업그레이드, JIT 컴파일러(실험적) |
# Python 3.10+ match-case (구조적 패턴 매칭)
def http_status(status: int) -> str:
match status:
case 200:
return "OK"
case 404:
return "Not Found"
case 500:
return "Internal Server Error"
case _:
return "Unknown"
print(http_status(404)) # Not Found
5. 활용 분야 6가지
1) AI / 머신러닝 (ML)
TensorFlow, PyTorch, scikit-learn 등 세계 최고 수준의 AI 라이브러리가 파이썬 기반입니다.
2) 웹 백엔드 개발
Django, FastAPI, Flask 등의 웹 프레임워크로 Instagram, Pinterest, Dropbox 등이 파이썬으로 구축되었습니다.
3) 데이터 분석 / 과학
Pandas, NumPy, Matplotlib, Jupyter Notebook을 활용한 데이터 처리와 시각화.
4) 자동화 / 스크립팅
파일 처리, 웹 크롤링, 업무 자동화, 테스트 자동화(Selenium, Playwright).
5) 교육
전 세계 대학과 교육 기관에서 프로그래밍 입문 언어로 가장 많이 채택됩니다.
6) DevOps / 인프라
Ansible, Fabric, AWS Lambda, GCP Cloud Functions 등 인프라 자동화에 폭넓게 사용.
6. 파이썬의 철학 — The Zen of Python
파이썬 인터프리터에서 import this를 실행하면 팀 피터스(Tim Peters)가 작성한 "파이썬의 선(禪)" 19가지 격언이 출력됩니다.
import this
주요 격언과 의미:
| 원문 | 의미 |
|---|---|
| Beautiful is better than ugly. | 아름다운 코드가 추한 코드보다 낫다. |
| Explicit is better than implicit. | 명시적인 것이 암묵적인 것보다 낫다. |
| Simple is better than complex. | 단순한 것이 복잡한 것보다 낫다. |
| Readability counts. | 가독성은 중요하다. |
| There should be one obvious way to do it. | 명확한 한 가지 방법이 있어야 한다. |
| If the implementation is hard to explain, it's a bad idea. | 설명하기 어려운 구현은 나쁜 아이디어다. |
# Zen of Python 정신을 담은 코드 예시
# 나쁜 예: 지나치게 영리한(clever) 코드
result = (lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v))))(lambda f: lambda n: 1 if n == 0 else n * f(n-1))(5)
# 좋은 예: 명확하고 읽기 쉬운 코드
def factorial(n: int) -> int:
"""n의 팩토리얼을 계산합니다."""
if n == 0:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
PEP(Python Enhancement Proposal) 는 파이썬의 새로운 기능, 문법, 가이드라인을 제안하는 공식 문서입니다.
- PEP 8: 파이썬 코드 스타일 가이드 (필독!)
- PEP 20: The Zen of Python (
import this) - PEP 484: 타입 힌트 도입
- PEP 572: Walrus 연산자 (
:=) 도입 - PEP 634: 구조적 패턴 매칭 (
match-case)
# PEP 8 스타일 가이드 핵심
# 좋은 예
user_name = "alice" # snake_case 변수명
MAX_RETRIES = 3 # UPPER_CASE 상수
class UserProfile: # PascalCase 클래스명
pass
# 나쁜 예
userName = "alice" # camelCase (자바 스타일 — 파이썬에서 비권장)
maxretries = 3 # 구분 없는 소문자
class user_profile: # snake_case 클래스명 (비권장)
pass
커뮤니티 참여 방법:
- python.org — 공식 사이트
- PyPI — 패키지 저장소
- Real Python — 고품질 튜토리얼
- Python Discord — 커뮤니티 채팅
파이썬의 기본 개념을 이해했다면, 다음 단계는 실제 개발 환경을 구축하는 것입니다. 다음 챕터에서 파이썬 설치부터 가상환경 설정까지 단계별로 살펴보겠습니다.