Python 실전 시리즈 전체 목차 | #01~#23 학습 경로·영문 글·연관 글
이 글의 핵심
Python의 읽기 쉬운 문법·배터리 포함 철학과 함께, #01~#23 목차·입문·웹·데이터·자동화 트랙, 영문·연관 글을 한곳에 정리했습니다.
들어가며
이 페이지는 pkglog Python 시리즈(한글 본편 #01~#23)의 통합 목차야. “표로 정해진 커리큘럼” 대신, 내가 겪은 것처럼 순서·건너뛰기·한 번씩 꼬였던 지점을 풀어 쓰려고 해. 자료구조 비교, pip·uv·Poetry 비교, 성능 최적화 사례 같은 단편은, 도구 감을 붙이고 싶을 때 옆에 두고 읽으면 돼.
같은 레포의 다른 언어 시리즈: Go 2주 완성 목차 · C++ 시리즈 목차
Python으로 처음 자동화했을 때
처음엔 “언어”보다 반복 작업이 문제였어. 폴더에 쌓인 파일 이름 바꾸기, 엑셀을 손으로 열지 않고 뭔가 돌리기, 작은 스크립트로 하루 한 번만 돌면 되는 일—그게 Python으로 들어간 입구였다. python script.py 한 줄이 내 시간을 덜어주는 느낌이 먼저 왔고, 그다음에야 문법·클래스·웹·DB가 “붙는” 쪽으로 갔다.
그래서 이 목차도 #01 → … → #23이 “정답 루트”라기보다, 자동화가 급하면 #07·#08 붙잡고 #21 쪽으로 가고, 로그·실패가 나오면 #08을 다시 보는 식이 현실에 가깝다. “다 읽고 나서 자동화”가 아니라, 필요한 만큼만 앞질러 가도 괜찮다—단, import도 애매하고 예외 메시지가 한글로만 보일 때는 #01~#05를 잠깐만 닦는 편이 나중에 덜 흔들린다.
내가 짚는 학습 루트(표 없이)
입문은 #01 환경에서 REPL·스크립트가 한 세트로 돌아가는지 보는 것부터. #02 #03 #04는 “읽을 수 있게”가 목표. #05 #06 #07는 쪼개서 다시 쓰는 연습. #08는 일부러 터뜨려 보고 메시지 읽는 쪽을 추천. #09 #10는 Flask·Django 가기 전에 “한 방에 안 풀리면 데코레이터” 정도의 감만 잡으면 됨.
웹은 #11 Flask → #12 Django → #13 REST → #14 DB → #15 배포 순이 자연스럽고, API·OpenAPI·비동기를 더 쓰고 싶으면 FastAPI 완벽 가이드·Python 비동기 프로그래밍 종합 가이드를 시리즈 밖에서 붙이면 된다.
데이터는 시리즈상 #16 Pandas가 #17 NumPy 앞에 있지만, 개인적으로는 아래 “의견” 절을 먼저 읽어봐. #18 Matplotlib #19 #20는 표 하나 가지고 “질문 → 그림 → 한 문장 결론”까지 가는 훈련용으로 쓰기 좋다.
자동화는 #21 파일 → #22 스크래핑 (robots·이용 약관 잊지 말 것) → #23 스케줄 로 묶는 게 내 경험상 덜 헤맨다.
한눈에 흐름만 보고 싶으면 아래 다이어그램은 그대로 두되, “표에 맞춰 4주” 같은 건 안 쓰기로 했다. 각자 주당 시간이 달라서, 주차表는 내 글엔 맞지 않다는 쪽이야.
flowchart LR
subgraph intro["입문 #01~10"]
A1["#01 환경"] --> A2["#02 문법"]
A2 --> A3["#03 자료형"]
A3 --> A4["#04 함수"]
A4 --> A5["#05 클래스"]
A5 --> A6["#06 모듈"]
A6 --> A7["#07 파일"]
A7 --> A8["#08 예외"]
A8 --> A9["#09 컴프리헨션"]
A9 --> A10["#10 데코레이터"]
end
subgraph web["웹 #11~15"]
B1["#11 Flask"] --> B2["#12 Django"]
B2 --> B3["#13 REST"]
B3 --> B4["#14 DB"]
B4 --> B5["#15 배포"]
end
subgraph data["데이터 #16~20"]
C1["#16 Pandas"] --> C2["#17 NumPy"]
C2 --> C3["#18 Matplotlib"]
C3 --> C4["#19 전처리"]
C4 --> C5["#20 분석"]
end
subgraph auto["자동화 #21~23"]
D1["#21 파일"] --> D2["#22 스크래핑"]
D2 --> D3["#23 스케줄"]
end
A10 --> B1
B5 --> C1
C5 --> D1
의견: NumPy 배우기 전에 기초부터
NumPy나 Pandas만 빨리 잡는 튜토리얼은 많은데, 나는 #02~#04에서 list·dict·함수 인자·스코프가 아직 흐릿한 상태로 ndarray를 들이밀면, “왜 이게 뷰고 왜 이건 복사냐”에서 막힌다고 본다. 반복·인덱싱이 머릿속에서 파이썬답게 돌아가야, 브로드캐스팅·축이 덜 낯설다.
그래서 “데이터 과학만 할 거야”라도 #01~#05는 짧게라도 훑는 걸 권한다. Pandas 먼저 가도 되지만, Series 아래에 NumPy가 있다는 걸 느끼기 전에 groupby만 찍다 보면, 나중에 성능·메모리 이슈가 와도 원인을 못 쪼개는 경우가 많다. 시리즈 편은 #16이 #17보다 앞에 있으니, 배열 연산이 먹먹할 때 #17로 잠깐 점프하는 식이 현실과 맞다.
시리즈에 직접 없지만 같이 읽을 만한 것
FastAPI 완벽 가이드·Python 비동기 프로그래밍 종합 가이드·Python 완벽 가이드는 REST·DB·배포와 자연스럽게 이어지고, #13~#15 읽고 나서 보면 “시리즈 밖”이 빈칸이 덜 느껴진다.
주제별로만 짚는 링크
함수형에 가까운 느낌 #04 #09 #10 — I/O·전역 갱신은 한곳에 몰고 나머지는 짧게.
파일 #07 #21 — 인코딩 utf-8, 경로(윈도우/리눅스)만큼은 매번 실제로 틀리니까, 여기서 감 익혀 두는 편이 좋다.
Pandas·NumPy #16 #17 #18 — 위 “의견” 절과 같이 읽으면 됨.
웹 #11 #12 #13 #14 #15 — 심화는 FastAPI.
asyncio 시리즈 본편은 동기 흐름이 많다. I/O 대기가 크면 비동기 가이드를 별도로.
테스트 — 예제를 함수로 쪼갠 뒤 pytest/unittest로 감싸 보기. #13이랑 HTTP 클라이언트 쓸 때 효과가 드러난다.
실전에 가까운 작은 시나리오
스크래핑 → 저장 → 돌리기 #22로 모으고, #07·#21로 CSV/JSON·로그, #23로 주기, #08로 실패 시 정책. HTTP·파싱은 원래 덜 믿을 수 있으니, 같은 작업을 여러 번 해도 저장 규칙이 뭉개지지 않게 만드는 연습이 포인트.
짧은 분석 공개 CSV → #19 → #16·#17 → #18 → #20 흐름으로 “질문 한 줄이 결론 한 줄”까지 가보기. 그래프 예쁜 것보다 다시 돌릴 수 있는 스크립트가 남는 게 이기는 편.
API #11 또는 #12로 CRUD 초안, #13에 맞춰 URL·상태·에러 바디, #14·#15. 여유 있으면 FastAPI로 스펙만 비슷하게 다시 써보면 계약(스키마)이 왜 큰지 체감된다.
핵심 코드 스니펫 미리보기
가상환경
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
python -m pip install --upgrade pip
pip install pandas
파일
from pathlib import Path
path = Path("data/input.txt")
with path.open("r", encoding="utf-8") as f:
text = f.read()
컴프리헨션 + 예외
def parse_ints(lines: list[str]) -> list[int]:
out: list[int] = []
for line in lines:
line = line.strip()
if not line:
continue
try:
out.append(int(line))
except ValueError:
continue
return out
Pandas
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())
print(df.describe(include="all"))
Flask (개념)
from flask import Flask, jsonify
app = Flask(__name__)
@app.get("/api/health")
def health():
return jsonify({"status": "ok"})
pytest (개념)
# test_parse_ints.py
from mymodule import parse_ints
def test_parse_ints_skips_invalid():
assert parse_ints(["1", "x", "2"]) == [1, 2]
비동기는 비동기 가이드 쪽 async def를 보면 된다.
도구 및 환경: venv, pip, Poetry, conda
venv는 표준 가상환경. Python만으로 가볍게 격리할 때—#01이랑 직결. pip는 사실상 기본; python -m pip로 환경이랑 맞추는 습관이 중요하다. Poetry는 lock·메타데이터를 빡세게 쓰고 싶을 때. conda는 NumPy·BLAS처럼 바이너리가 많이 얽힌 데이터 쪽에서 가끔 편하다.
팀 규칙 없으면 venv + pip + requirements.txt로 시작하고, 고장·재현이 문제되면 pip / uv / Poetry 비교에서 Poetry나 uv 쪽을 본다. 표로 “언제 쓰나”를 박아 두기보다, 지금 팀이 고정한 게 뭔지가 먼저다.
IDE: VS Code, PyCharm
VS Code — Python, Pylance(또는 LSP), Ruff/Black. 가볍고 프론트랑 한 창에 묶기 좋다. .venv를 인터프리터로 잡고 포맷 on save 맞추면 된다.
PyCharm — 리팩터·디버거·Django/DB·Docker 쪽이 무겁지만 강하다. 큰 모듈 나뉜 프로젝트에서 “정의로 이동”이 빨라질 수 있다.
둘 다 CI랑 같은 포매터/린터를 쓰는 게 “내 PC에서만 통과”를 줄인다.
시리즈 본편 #01~#23 — 링크만
- #01 Python 환경 설정 — [EN](/en/blog/python-series-01-environment-setup/
- #02 Python 기본 문법 — [EN](/en/blog/python-series-02-basic-syntax/
- #03 Python 자료형 — [EN](/en/blog/python-series-03-data-types/
- #04 Python 함수 — [EN](/en/blog/python-series-04-functions/
- #05 Python 클래스·OOP — [EN](/en/blog/python-series-05-classes/
- #06 모듈과 패키지 — [EN](/en/blog/python-series-06-modules/
- #07 파일 처리 — [EN](/en/blog/python-series-07-file-handling/
- #08 예외 처리 — [EN](/en/blog/python-series-08-exception-handling/
- #09 컴프리헨션 — [EN](/en/blog/python-series-09-comprehensions/
- #10 데코레이터 — [EN](/en/blog/python-series-10-decorators/
- #11 Flask 기초 — [EN](/en/blog/python-series-11-flask-basics/
- #12 Django 기초 — [EN](/en/blog/python-series-12-django-basics/
- #13 REST API — [EN](/en/blog/python-series-13-rest-api/
- #14 데이터베이스 — [EN](/en/blog/python-series-14-database/
- #15 웹 배포 — [EN](/en/blog/python-series-15-deployment/
- #16 Pandas 기초 — [EN](/en/blog/python-series-16-pandas/
- #17 NumPy 기초 — [EN](/en/blog/python-series-17-numpy/
- #18 Matplotlib — [EN](/en/blog/python-series-18-matplotlib/
- #19 데이터 전처리 — [EN](/en/blog/python-series-19-data-preprocessing/
- #20 데이터 분석 실전 — [EN](/en/blog/python-series-20-data-analysis/
- #21 파일 자동화 — [EN](/en/blog/python-series-21-file-automation/
- #22 웹 스크래핑 — [EN](/en/blog/python-series-22-web-scraping/
- #23 작업 스케줄링 — [EN](/en/blog/python-series-23-task-scheduling/
시리즈와 함께 보면 좋은 단편
- Python list vs tuple vs set 완벽 비교
- pip / uv / Poetry 비교
- 성능 최적화 실전 사례
- Python 비동기 프로그래밍 종합 가이드
- FastAPI 완벽 가이드
- Python 완벽 가이드
내부 동작을 한 겹만 더
입력·요청·이벤트 → 파싱·검증 → 핵심 연산·상태 전이 → I/O·네트워크 같은 부작용 → 결과·로그·저장. “각 단계가 만족해야 하는 조건(불변조건)을 문장으로 남겨 두면” 디버깅이 쉬워지고, 순수 층과 시간·넷에 흔들리는 층을 나누면 테스트가 쉬워진다. 직렬화·인코딩·시스템콜·락 경합은 한 호출이 아니라 누적으로 아프다는 것만 머릿속에 있으면 된다.
flowchart TD A[입력·요청·이벤트] --> B[파싱·검증·디코딩] B --> C[핵심 연산·상태 전이] C --> D[부작용: I/O·네트워크·동시성] D --> E[결과·관측·저장]
프로덕션에서 자주 터지는 쪽
실서비스는 “기능”만이 아니라 뭘 볼지·어떻게 막을지·얼마나 버틸지까지 같이 온다. 관측(요청 단위 id, 에러율, 지연이 분위수로 보이는지), 입력·권한·비밀 일관성, 재시도는 멱등한 쪽에만, 배포·롤백·DB 마이그레이션—여기는 표로 “체크” 대신, 팀 런북이 있으면 그걸 믿는다.
스테이징이 프로덱션보다 덜아프면 “내 PC에선 됐는데”가 영원히 반복된다. 데이터 양·지연·부하를 최대한 가깝게 맞추는 게 비용으로 돌아온다.
문제가 생겼을 때
간헐적 실패 — 레이스, 타임아웃, 외부 API. 최소 재현 스크립트, 로그 상관, 트레이스. 느리다 — N+1, 동기 I/O, 락, 직렬화 남용. 프로파일러/APM에서 한 가지만 뺀다. 메모리 — 캐시 상한, 구독 누수, 큰 복사. 배포만 실패 — env, 권한, OS 차이, CI 로그 vs 로컬. 순서는: 최소 재현 → 최근 변경 줄이기 → env·의존성 diff → 가설·수정·회귀.
자주 묻는 질문 (FAQ)
시리즈 글은 어떤 순서로 읽어? #01부터 가는 게 제일 덜 꼬여. 기초 있으면 웹·데이터·자동화만 골라 읽어도 돼.
FastAPI·asyncio는 본편에 없는데? 23편은 Flask·Django 쪽 흐름이 많으니, 깊게 쓰려면 비동기 가이드랑 FastAPI를 옆에 둬.
테스트는 언제부터? #04 직후부터 짧은 함수에 붙이는 습관. 웹은 #13 뒤에 HTTP 클라이언트·통합으로 키우면 돼.
Pandas vs NumPy 먼저? 개념은 NumPy ndarray에 익숙해지면 Pandas가 덜 낯선 경우가 많아. 시리즈는 #16이 앞이니, 배열·축이 막히면 #17로 점프해 봐. 이건 위 “의견” 절이랑 같이 봐.
영문은? 같은 번호 slug에 -en 붙이면 됨.
seriesId는? 한글 본편은 seriesId: 'python', #01~#23 순.
Go랑 비교해볼 만해? Go 목차의 고루틴·REST 쪽이랑 같이 읽으면 동시성 모델 차이가 손에 잡힌다.
같이 보면 좋은 글
이 글에서 다루는 키워드 (관련 검색어)
Python, 시리즈, 목차, 학습 경로, 입문, 웹개발, 데이터분석, Flask, Django, Pandas, NumPy, 웹 스크래핑, 스케줄링, 가상환경, pytest 등으로 검색해 보시면 이 글이 도움이 됩니다.