기본 규칙
- 공백(Space) 또는 탭(Tab) 사용
- 보통 4개의 스페이스(공백)를 사용하는 것이 표준.
- 탭(Tab) 대신 스페이스를 사용하는 것이 권장됨 (PEP 8 스타일 가이드).
- 혼합 사용하면 IndentationError 발생할 수 있음.
- 같은 블록은 동일한 들여쓰기 유지
- 동일한 코드 블록(예: if 문 내부, 함수 내부 등)은 동일한 들여쓰기 깊이로 작성.
- 들여쓰기 깊이가 다르면 IndentationError 발생.
- 콜론(:) 뒤에는 들여쓰기 필요
- if, for, while, def, class 등 블록을 여는 문장은 :로 끝나고, 그다음 줄부터 들여쓰기해야 함.
🎯 Prettier vs ESLint에 해당하는 파이썬 도구
역할 | JavaScript (Next.js) | Python |
코드 포맷팅 (Prettier) | Prettier | Black, autopep8, yapf |
코드 스타일 검사 (ESLint) | ESLint | Flake8, Pylint |
1. Prettier 역할 → Black / autopep8 / yapf
✅ 자동 코드 포맷팅 (들여쓰기 포함)
JavaScript에서 Prettier가 하는 역할을 파이썬에서는 Black, autopep8, yapf 같은 도구로 검사.
- Black → 가장 엄격한 코드 포맷터, "모든 걸 자동으로 맞춰줌"
- autopep8 → PEP 8 스타일 가이드에 맞게 정리 (Prettier와 가장 유사)
- yapf → 구글 스타일 가이드를 따르는 포맷터
🔹 Black 설치 및 사용 예제
pip install black
black myfile.py # 파일 자동 포맷팅
💡 Black은 "4칸 들여쓰기 + PEP 8 스타일"을 자동 적용해줌.
✅ black (코드 포맷팅)
폴더 내 모든 .py 파일을 검사 및 포맷팅
black .
- . → 현재 폴더 내 모든 .py 파일을 자동 포맷팅
- 하위 폴더까지 모든 .py 파일을 재귀적으로 검사 후 수정
🔹 특정 폴더만 검사 및 포맷팅
black src/ # src 폴더 내의 모든 Python 파일 포맷팅
🔹 특정 확장자 제외 (-exclude)
black . --exclude "migrations/"
- "migrations/" 폴더 내 파일 제외
- 정규식을 사용할 수도 있음
📌 예제: .ipynb(Jupyter Notebook)와 migrations/ 폴더 제외
black . --exclude "\\.ipynb|migrations/"
2. ESLint 역할 → Flake8 / Pylint
✅ 코드 스타일 검사 (버그, 스타일 규칙 체크)
JavaScript에서 ESLint가 코드 스타일을 검사하듯이, 파이썬에서는 Flake8 또는 Pylint 를 사용.
- Flake8 → 가장 널리 사용됨, 간단한 코드 스타일 체크
- Pylint → 좀 더 강력한 린터 (타입 검사까지 포함)
🔹 Flake8 설치 및 사용 예제
pip install flake8
flake8 myfile.py # 코드 스타일 체크
💡 Flake8은 들여쓰기 오류(IndentationError), 변수 미사용 경고 등을 수정해줌.
✅ flake8 (코드 스타일 검사)
🔹 폴더 내 모든 .py 파일 검사
flake8 .
- . → 현재 폴더 내 모든 .py 파일을 검사
- 하위 폴더까지 자동으로 검사 수행
🔹 특정 폴더만 검사
flake8 scraper/ # scraper 폴더만 검사
🔹 특정 확장자 또는 폴더 제외 (-exclude)
flake8 . --exclude=migrations,__pycache__,tests
- migrations/, __pycache__/, tests/ 폴더 내 파일 제외
📌 예제: Jupyter Notebook(.ipynb) 파일과 특정 폴더 제외
flake8 . --exclude=migrations,__pycache__,tests --ignore=E501
- E501 → 너무 긴 줄 경고 무시 (PEP 8에서 79자 이상)
🎯 .black과 .flake8 설정 파일을 사용해 확장자/폴더 제외
✅ black 설정 (pyproject.toml)
📌 black은 pyproject.toml 파일에서 설정 가능.
[tool.black]
line-length = 88 # 기본값 88 → 79로 변경 가능
target-version = ['py38'] # 특정 Python 버전 지정 가능
exclude = '''
/(
migrations # Django migration 파일 제외
| __pycache__ # 캐시 폴더 제외
| .*\\.ipynb # Jupyter Notebook 제외
)/
'''
- exclude는 정규식 패턴 사용 가능.
✅ flake8 설정 (.flake8 or setup.cfg)
📌 .flake8 파일을 프로젝트 루트에 생성하여 설정 가능.
[flake8]
exclude = migrations, __pycache__, tests # 제외할 폴더
max-line-length = 88 # 줄 길이 제한 (기본값: 79)
ignore = E203, E266, E501 # 특정 경고 무시
📌 setup.cfg에서도 같은 설정 가능.
[tool:flake8]
exclude = migrations, __pycache__, tests
max-line-length = 88
'Dev > Python' 카테고리의 다른 글
🚨[Alembic] 명령어 및 오류 설정확인 (0) | 2025.03.20 |
---|---|
[FastAPI] FastAPI+ Alembic 설정 및 프로세스 정리 (0) | 2025.03.19 |
[FastAPI] Alembic migrations/env.py 수정하여 특정 테이블 무시 (0) | 2025.03.15 |
🚨[Python] package import error (0) | 2025.03.15 |
[Python] requirements.txt 생성 및 설치 방법 (0) | 2025.03.15 |