
파이썬은 사실 느린 언어입니다. C보다 수십 배 느려요. 🐢 그런데 GPT도, 이미지 생성 AI도, 거의 모든 딥러닝 코드가 파이썬으로 쓰입니다. 왜일까요?
답은 이 언어가 "왜 이렇게 생겼는지" 에 있습니다. 이번 글에서는 문법을 외우기 전에, 1989년 크리스마스 연휴의 취미 프로젝트가 어떻게 AI의 공용어가 되었는지, 들여쓰기·세미콜론 없음 같은 특이한 규칙이 모두 이유 있는 선택이었다는 것부터 봅니다. 그리고 Colab·pip·가상환경(venv)으로 첫 코드를 실행하는 데까지 갑니다.
📘 이 글은 위키독스 도서 Zero to 머신러닝 딥러닝 Master 의 02-01 🌱 1부 — 파이썬이라는 언어의 이야기 을 블로그용으로 다듬은 글입니다.
💻 실습 코드: GitHub · 🏠 mldict.net · ✍️ 기술 블로그
💻 이 글의 코드:
02-01-python-story· Open in Colab — 핵심 코드와 실제 실행 결과는 글 아래 💻 GitHub 실습 섹션에 있습니다.
⬅️ 이전 글: #33 딥러닝을 위한 파이썬 입문 로드맵 — 변수는 이름표, 클래스는 Layer (02권 헬로 파이썬 소개) \
➡️ 다음 글: #35 파이썬 자료형 완전 정복 — 변수는 이름표, list·tuple·dict·set 고르는 법과 형변환·초보자 3대 에러 (02권 2부)
import this)의 핵심은 가독성이고, 5대 특징은 읽기 쉬운 문법·광범위한 라이브러리·플랫폼 독립성·대화형 인터프리터·커뮤니티입니다. AI가 파이썬을 쓰는 결정적 이유는 "무거운 계산은 C/CUDA가, 사람은 파이썬으로 지시만" 하기 때문입니다.pip로, 프로젝트마다 가상환경(venv) 으로 방을 따로 씁니다.🔗 지난 글 복습: #33 딥러닝을 위한 파이썬 입문 로드맵 (02권 헬로 파이썬 소개)에서 02권 전체의 지도와 "변수는 이름표" 라는 핵심 문장을 봤습니다. 이번 글은 그 지도의 첫 칸, 파이썬이라는 언어의 이야기입니다.
문법을 외우기 전에 "이 언어가 왜 이렇게 생겼는지"를 먼저 알면, 이후 모든 규칙이 암기가 아니라 납득이 됩니다. 파이썬의 특이한 점들 — 중괄호 대신 들여쓰기, 세미콜론 없음, 타입 선언 없음 — 은 전부 이유가 있는 선택이었습니다.
① ABC 언어의 실패와 교훈 — "쉬운데 쓸모가 없다"
귀도 반 로섬(Guido van Rossum)은 네덜란드 국립 수학·컴퓨터 과학 연구소(CWI)에서 ABC라는 교육용 언어 개발에 참여했습니다.
😊 ABC의 장점
· 문법이 매우 읽기 쉬움\
· 초보자가 배우기 쉬움\
· 코드가 짧고 명확함
😰 ABC의 치명적 약점
· 확장이 안 됨 (기능 추가 불가)\
· 시스템 콜(OS 자원) 접근이 어려움\
· 결국 "장난감 언어"로 남음
👉 귀도의 결론: "ABC의 읽기 쉬운 문법은 지키되, 실제 시스템 개발에도 쓸 수 있는 확장성을 갖춘 언어를 만들자." 이 한 문장이 파이썬의 설계도가 되었습니다.
② 1989년 크리스마스 — 취미로 시작된 프로젝트 🎄
1989년 12월, 귀도는 연구소가 문을 닫은 크리스마스 휴가 기간에 개인 취미로 파이썬을 만들기 시작했습니다. 회사 프로젝트가 아니었습니다.
🔍 더 쉽게 이해하기 — 🔧 딱 맞는 공구가 없어서 직접 만든 목수
당시 귀도는 아메바(Amoeba) 분산 운영체제 프로젝트를 하고 있었는데, 손에 든 도구가 애매했습니다.\
🔨 C 언어 — 강력하지만 너무 딱딱하고 오래 걸림 (못 하나 박는데 설계도부터)\
🪛 쉘 스크립트 — 빠르지만 큰 작업엔 너무 약함 (드라이버로 벽 뚫기)\
👉 그래서 "C보다 유연하고 쉘보다 강력한" 중간 도구를 직접 만들었습니다. 그게 파이썬입니다.\
즉 파이썬은 "교육용 장난감"이 아니라 처음부터 "실무자가 자기 일 하려고 만든 실전 도구"였습니다.
③ 이름의 유래 — 뱀이 아니라 코미디 🎭
🐍 대부분 사람들은 파이썬이 "비단뱀"에서 왔다고 생각합니다. 틀렸습니다.\
\
🎬 실제 유래는 귀도가 좋아하던 영국 코미디 그룹 「몬티 파이썬의 비행 서커스(Monty Python's Flying Circus)」입니다.\
\
왜 이런 이름을? 귀도는 새 언어가 "지루하지 않고 재미있기를" 바랐고, 짧고 독특한 이름을 선호했습니다.\
📌 그래서 파이썬 공식 문서에는 지금도 spam, eggs 같은 몬티 파이썬 개그에서 온 예제 변수명이 등장합니다. (영어권 튜토리얼에서 foo, bar 대신 spam이 나오면 이 때문입니다.)\
"재미있어야 한다"는 태도가 이름에서부터 시작된 언어입니다.
🖼️ 시각화 — 파이썬 역사 연표

📋 역사적 이정표 정리
| 연도 | 사건 | 의미 |
|---|---|---|
| 1989 | 개발 시작 | 귀도의 크리스마스 연휴 개인 프로젝트 |
| 1991 | 버전 0.9.0 공개 | 최초 공개. 이미 클래스·예외 처리 포함 |
| 1994 | 버전 1.0 발표 | lambda·map·filter — 함수형 프로그래밍 추가 |
| 2000 | 버전 2.0 발표 | 가비지 컬렉터(GC)·리스트 컴프리헨션 도입 |
| 2008 | 버전 3.0 발표 | 하위 호환성을 과감히 버리고 언어의 정결함 강화 |
⭐ 오늘의 한 줄 — 파이썬은 "쉽지만 쓸모없던 언어"의 교훈에서, "쉬우면서 강력한 언어"를 목표로 태어났습니다.
파이썬 인터프리터에 import this를 입력하면 「파이썬의 선(禪)」이 출력됩니다. 그중 딥러닝 코드를 쓸 때 특히 중요한 문장들입니다.
📖 Beautiful is better than ugly. — 아름다운 것이 추한 것보다 낫다\
📖 Simple is better than complex. — 단순한 것이 복잡한 것보다 낫다\
📖 Readability counts. — 가독성은 중요하다\
📖 Explicit is better than implicit. — 명시적인 것이 암시적인 것보다 낫다\
📖 There should be one obvious way to do it. — 하는 방법은 하나여야 한다
🔍 더 쉽게 이해하기 — 📕 소설처럼 읽히는 코드
다른 언어에서 "0부터 9까지 출력"은 이렇게 씁니다.\
for (int i = 0; i < 10; i++) { printf("%d", i); }\
파이썬은 이렇게 씁니다.\
for i in range(10): print(i)\
👉 "for i in range 10, print i" — 영어 문장 그대로 읽힙니다.\
코드를 소설처럼 읽히게 만들면 유지보수 비용이 극적으로 줄어듭니다. 이것이 "가독성 중심" 설계의 목적입니다.
🏅 파이썬의 5대 특징
| 특징 | 무엇이 좋은가 |
|---|---|
| 📖 ① 읽기 쉬운 문법 | 중괄호 대신 들여쓰기로 블록을 구분해 누구나 같은 모양의 코드를 씁니다. 초보자도 남의 코드를 읽을 수 있습니다. |
| 📚 ② 광범위한 라이브러리 | 데이터 분석 pandas, 웹 Django, ML scikit-learn, 딥러닝 PyTorch. 바퀴를 다시 발명할 필요가 없습니다. |
| 🌍 ③ 플랫폼 독립성 | 윈도우에서 짠 코드가 맥·리눅스·서버에서 그대로 돌아갑니다. 연구는 노트북, 학습은 GPU 서버로 옮겨도 코드는 동일합니다. |
| 💬 ④ 대화형 인터프리터 | 한 줄 쓰고 즉시 결과 확인. 컴파일을 기다릴 필요가 없어 실험이 빠릅니다. 주피터 노트북이 AI 연구 표준이 된 이유입니다. |
| 🤝 ⑤ 커뮤니티와 오픈소스 | 1991년 공개 이후 귀도는 독점권을 갖는 대신 전 세계 개발자와 함께 언어를 키웠습니다. 그 결과 모르는 게 있으면 이미 누군가 답을 써놨습니다. |
사실 파이썬은 실행 속도가 느린 언어입니다. C보다 수십 배 느립니다. 그런데 왜 AI 표준이 되었을까요?\
\
🎯 답: "무거운 계산은 C가 하고, 사람은 파이썬으로 지시만 한다"\
· NumPy·PyTorch의 핵심 연산부는 C/C++/CUDA로 작성되어 있습니다\
· 파이썬은 그 위에서 "무엇을 계산할지 지시하는 리모컨" 역할만 합니다\
· A단원의 "C/C++ 모듈을 쉽게 붙일 수 있는 확장성"이라는 설계 목표가 30년 뒤 딥러닝 시대에 꽃핀 것입니다\
\
🎮 비유 — 게임기 본체(C/GPU)는 초고속으로 계산하고, 여러분은 컨트롤러(파이썬)만 잡습니다. 컨트롤러가 느려도 게임은 빠릅니다.
⭐ 오늘의 한 줄 — 파이썬은 "사람이 읽기 쉬운 리모컨"이고, 무거운 계산은 그 아래의 C가 대신합니다.
| 방법 | 추천 대상 | 장점 | 단점 |
|---|---|---|---|
| ☁️ Google Colab 설치 불필요 | 완전 초보 · 지금 당장 시작 | 설치 0분, GPU 무료, 브라우저만 있으면 됨 | 인터넷 필수, 세션이 끊기면 초기화 |
| 🐍 Python 공식 python.org | 가볍게 쓰고 싶은 사람 | 용량이 작고 깔끔함 | 라이브러리를 하나씩 직접 설치 |
| 📦 Anaconda 데이터 과학 올인원 | 본격 학습·연구 | NumPy·Plotly·주피터가 한 번에 설치됨 | 용량이 큼(수 GB) |
1️⃣ 브라우저에서 colab.research.google.com 접속\
2️⃣ 구글 계정으로 로그인 → 「새 노트」 클릭\
3️⃣ 회색 칸에 print("Hello Python!") 입력\
4️⃣ Shift + Enter 누르기\
→ 아래에 결과가 나오면 성공입니다. 설치 없이 NumPy·Plotly가 전부 준비되어 있습니다.
💻 직접 설치할 때 주의사항 (윈도우 기준)
⚠️ 설치 화면에서 「Add Python to PATH」 체크박스를 반드시 켜세요.\
이걸 빼먹으면 터미널에서 python을 쳤을 때 "명령을 찾을 수 없습니다" 오류가 납니다.\
\
🔧 이미 빼먹었다면? 두 가지 방법이 있습니다.\
① 재설치가 가장 빠릅니다 (설치 파일 다시 실행 → Modify → PATH 체크)\
② 수동 등록: 시스템 → 고급 시스템 설정 → 환경 변수 → Path에 파이썬 설치 폴더와 그 안의 Scripts 폴더를 추가한 뒤 재부팅\
\
📁 PATH가 뭔가요? 컴퓨터가 프로그램을 찾아다니는 "검색 경로 목록"입니다. 여기 등록되어야 어느 폴더에서든 python이라고 불렀을 때 반응합니다.
📦 라이브러리 설치 — pip 사용법
🖥️ 터미널(명령 프롬프트)
# 파이썬이 잘 설치됐는지 확인
python --version
# 이 장에서 쓸 라이브러리 설치 (pip = 파이썬 패키지 설치 도구)
pip install numpy plotly
# 주피터 노트북까지 원한다면
pip install jupyterlab
# 설치된 목록 확인
pip list
🏠 비유 — 한집에 여러 사람이 살면서 같은 냉장고를 쓰면, A가 B의 재료를 써버려 요리가 망합니다. 가상환경은 프로젝트마다 냉장고를 따로 주는 것입니다.\
\
프로젝트 A는 NumPy 1.24가, 프로젝트 B는 NumPy 2.0이 필요할 때 충돌 없이 공존합니다.\
python -m venv myenv→ 생성\
myenv\Scripts\activate(윈도우) /source myenv/bin/activate(맥·리눅스) → 진입\
지금 당장은 몰라도 됩니다. 다만 나중에 "라이브러리 버전이 꼬였다"는 문제가 생기면 이 단락으로 돌아오세요.
💻 첫 코드 — Hello Python
🐍 첫 실행
print("Hello Python!") # 화면에 글자 출력
print(2 + 3 * 4) # 계산기로도 쓸 수 있다
import sys
print("파이썬 버전:", sys.version.split()[0])
🔗 GitHub에서 코드 보기 — 02_01_python_story.py L12–L16
▶ 실행 결과 (책 원고의 출력 예시)
Hello Python!
14
파이썬 버전: 3.12.3
🎉 이 세 줄이 나왔다면 환경 구축 완료입니다. (버전 숫자는 여러분 컴퓨터에 따라 다릅니다. 3.9 이상이면 이 책의 모든 코드가 동작합니다.)
⭐ 오늘의 한 줄 — 막히면 Colab으로 시작하세요. 설치에 시간을 쓰는 것보다 코드를 한 줄이라도 더 돌려보는 게 낫습니다.
🔜 다음 부 예고 — 02-02. 📦 2부 — 데이터를 담는 그릇: 자료형
파이썬을 설치하고 첫 코드를 실행했습니다. 다음 부에서는 변수가 "상자"가 아니라 이름표라는 핵심 원리부터 시작해, 숫자·문자열·리스트·딕셔너리 같은 그릇을 하나씩 다룹니다.
📂 이 장의 코드 폴더: book/02-hello-python/02-01-python-story
책에 실린 코드를 장(절)별로 모아 둔 폴더입니다. 아래 파일을 열어 보거나, Colab에서 바로 실행해 보세요.
| 파일 | 용도 | 링크 |
|---|---|---|
02_01_python_story.py | 책의 코드 블록 1개를 순서대로 모은 실행 스크립트 (# %% 셀 구분) | 코드 보기 |
02_01_python_story.ipynb | 같은 코드를 블록당 셀 1개로 담은 주피터 노트북 | 보기 · Colab |
README.md | 코드 블록 목록 · 실행 방법 · 검증 결과 | 보기 |
commands.sh | 책에 나온 셸 명령 모음 (python --version·pip install 등) | 보기 |
🧪 저장소 검증 상태: ✅ 실행 OK
📄 02_01_python_story.py L12–L16 · Block 1 (💡 가상환경(venv) — 프로젝트마다 방을 따로 쓰기)
print("Hello Python!") # 화면에 글자 출력
print(2 + 3 * 4) # 계산기로도 쓸 수 있다
import sys
print("파이썬 버전:", sys.version.split()[0])
▶ 실행 결과 — 위 코드를 실행한 출력 (직접 실행: Linux · Python 3.13.5 · numpy 2.5.3, 앞 블록부터 순서대로 실행)
Hello Python!
14
파이썬 버전: 3.13.5
👉 Open in Colab — 02_01_python_story.ipynb · 설치 없이 브라우저에서 셀을 위에서부터 순서대로 실행하세요.
git clone https://github.com/otoloism/Zero_to_ML_Master.git
cd Zero_to_ML_Master
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r book/requirements.txt # 책 전체용 (PyTorch 등 포함, 용량 큼)
cd book/02-hello-python/02-01-python-story
python 02_01_python_story.py
⭐ 코드가 도움이 되셨다면 GitHub 저장소에 Star를 눌러 주세요. 새 장의 코드가 올라올 때 가장 먼저 알 수 있습니다.
🍴 직접 고쳐 보며 실험하고 싶다면 Fork 해서 내 저장소에서 마음껏 바꿔 보세요. 오류 제보·개선 제안은 Issues로 환영합니다!
다음 글은 #35 파이썬 자료형 완전 정복 — 변수는 이름표, list·tuple·dict·set 고르는 법과 형변환·초보자 3대 에러 (02권 2부) 입니다. 변수가 값을 담는 "상자"가 아니라 물건에 붙이는 이름표라는 핵심 원리부터 시작해, 숫자·문자열·리스트·튜플·딕셔너리·집합 같은 그릇을 하나씩 다루고, a = b 뒤에 둘 다 바뀌는 이유와 흔한 형변환 에러까지 짚습니다.
⬅️ 이전 글: #33 딥러닝을 위한 파이썬 입문 로드맵 — 변수는 이름표, 클래스는 Layer (02권 헬로 파이썬 소개) \
➡️ 다음 글: #35 파이썬 자료형 완전 정복 — 변수는 이름표, list·tuple·dict·set 고르는 법과 형변환·초보자 3대 에러 (02권 2부)
이 시리즈는 수학을 놓았던 비전공자가 AI를 직접 구현하기까지의 공부 기록을 그대로 옮긴 연재입니다. 원문 책, 코드, 개념 사전을 함께 보면 훨씬 빨리 늡니다. 🚀
| 바로가기 | 이런 분께 | |
|---|---|---|
| 📘 책 (위키독스, 무료) | Zero to 머신러닝 딥러닝 Master | 5권 · 20개 장 · 163개 절 전체를 순서대로 읽고 싶은 분 |
| 📄 이 글의 원문 | 02-01 🌱 1부 — 파이썬이라는 언어의 이야기 | 연습문제·해설까지 전부 보고 싶은 분 |
| 💻 실습 코드 (GitHub) | otoloism/Zero_to_ML_Master | .py·.ipynb를 Colab에서 바로 돌려보고 싶은 분 |
| 🏠 머신러닝 백과사전 | mldict.net | 본문 속 핵심 개념을 카드로 다시 확인하고 싶은 분 |
| ✍️ 기술 블로그 | wikidocs.net/blog/@mldict | 새 글 알림을 가장 먼저 받고 싶은 분 |
⭐ 도움이 되셨다면 velog 팔로우와 GitHub Star를 눌러 주세요. 다음 글을 쓰는 가장 큰 힘이 됩니다. 궁금한 점은 댓글로 편하게 남겨 주세요! 🙌