Data-Driven System Development/Project Structure 14

파이썬에서 언더스코어 두 개(__)와 Name Mangling(맹글링)의 차이

파이썬 코드를 보다 보면어떤 파일이나 변수 이름에 언더스코어(_)가 두 개 붙은 것을 볼 수 있습니다.이 글에서는파일명/변수명에 언더스코어를 두 개 붙이는 이유Name Mangling(맹글링)이란 무엇인가맹글링은 왜 필요한가를 차근차근 정리해봅니다. 언더스코어 두 개(__) 사용 – 내부 전용 표시파이썬에서는 파일이나 변수 이름 앞에 **언더스코어 두 개(__)**를 붙이면,"이건 내부 전용이니까 외부에서 직접 쓰지 마세요" 라는 의미를 전달합니다.❗ 하지만 주의할 점:Python은 이걸 강제하지 않습니다.단순히 **"개발자끼리의 약속(convention)"**일 뿐입니다. 예시:project/├── __internal_module.py├── public_module.py __internal_module..

파이썬 pathlib에서 디렉토리 생성할 때 알아야 할 두 가지 옵션

파이썬 프로젝트를 구성할 때, 필요한 폴더(디렉토리)를 자동으로 생성해주는 코드를 자주 작성합니다.특히 pathlib 모듈을 사용할 때는 mkdir() 메서드의 두 가지 옵션을 제대로 이해하는 것이 중요합니다.이번 글에서는 그 옵션들을 간단하게 정리해볼게요. 기본 코드 예시for dir_path in [DATA_DIR, RAW_DATA_DIR, PROCESSED_DATA_DIR, MODEL_OUTPUT_DIR]: dir_path.mkdir(parents=True, exist_ok=True) 두 가지 중요한 옵션 왜 이 옵션이 필요할까?parents=True가 없으면 상위 폴더가 없을 때 오류가 발생할 수 있어요.exist_ok=True가 없으면 이미 폴더가 존재할 경우 오류가 나버립니다.→ 이 ..

파이썬에서 변수명을 대문자로 쓰는 이유는?

파이썬 코드에서 가끔 PROJECT_ROOT, **DATA_DIR**처럼모두 대문자로 작성된 변수명을 볼 때가 있습니다."왜 소문자가 아니라 대문자로 썼을까?" 궁금해본 적이 있다면,이 글을 통해 간단히 정리해볼게요! 대문자 변수는 "상수"를 의미한다파이썬에서는 변하지 않는 값(상수, Constant) 을대문자+언더스코어 형식으로 작성하는 것이 관례입니다. 예를 들어:PROJECT_ROOT = Path(__file__).resolve().parentDATA_DIR = PROJECT_ROOT / "data" 여기서 PROJECT_ROOT, DATA_DIR는코드 실행 중에 변하지 않을 값을 저장하는 용도입니다. 왜 대문자로 작성할까? 공식 권장사항 (PEP8)파이썬 스타일 가이드(PEP8)에서도 이렇게 ..

os.path vs pathlib.Path – 파이썬 경로 처리 방식 차이 이해하기

파이썬에서 파일이나 디렉토리 경로를 다룰 때 os.path와 pathlib.Path를 모두 볼 수 있습니다.둘은 비슷해 보이지만, 실제로는 스타일과 철학이 다릅니다.이번 글에서는 이 둘의 차이를 간단하고 직관적으로 정리해보겠습니다. os.path란?os.path는 경로 관련 기능을 제공하는 함수 기반 모듈입니다.경로 연결, 절대 경로 변환, 디렉토리 추출 등을 함수로 처리합니다.전통적인 방식으로, 파이썬 초창기부터 존재해왔습니다.import osPROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) pathlib.Path란?pathlib.Path는 객체지향 방식으로 경로를 다루는 모듈입니다.파이썬 3.4부터 도입된 비교적 현대적인 스타일입니다.경로를 문자열..

utils의 뜻

"utils"는 "utilities"의 줄임말→ 보조 함수들, 공통적으로 자주 쓰이는 기능들, 즉 **“유틸리티 도구 모음”**을 담은 파일 언제 utils.py를 쓰나?여러 모듈에서 공통적으로 사용할 함수, 클래스, 헬퍼 로직을 한 곳에 모아둘 때코드 중복을 줄이고, 재사용성을 높이기 위해로직과 도구성 함수를 구분하고 싶을 때 예시# utils.pydef save_json(path, data): with open(path, 'w') as f: json.dump(data, f)def seed_everything(seed: int): random.seed(seed) np.random.seed(seed)# main.py 또는 다른 모듈from utils import seed_ev..

컨벤션이란?

컨벤션(Convention)의 뜻"컨벤션"은 개발자들 사이에서 공통적으로 따르기로 한 약속이나 규칙을 말해. 즉, 필수는 아니지만 다수가 따르는 권장 표준이야. 법은 아니지만, 지키면 협업과 유지보수가 훨씬 쉬워지는 암묵적 룰이라고 보면 돼. 예시로 쉽게 이해하기 변수 이름 컨벤션# 권장 컨벤션 (PEP 8)user_name = "jihyo" # 스네이크 케이스# 지양되는 방식UserName = "jihyo" # 자바 스타일 (파이썬에서는 클래스명에 씀) 디렉토리 컨벤션❌ 나쁜 예- testcode/- codes/- main_script.py✅ 좋은 예- src/- tests/- main.py 한 줄 정의컨벤션은 "다수가 동의한 코딩 습관과 규칙"으로, 코드 스타일, 구조, 작명법 등에 적용되는..

파이썬 프로젝트 / 패키지 작명 규칙 요약

**파이썬 프로젝트나 패키지 작명에도 일정한 규칙(또는 권장 컨벤션)** 파이썬 프로젝트 / 패키지 작명 규칙 요약 예시 비교✅ 올바른 구조 예시mlopsstudy/ ← 패키지 이름 (소문자 or 스네이크)├── data_loader.py ← 모듈 (소문자 + _)├── ml_pipeline.py├── MlManager.py ← 클래스 파일이면 가능, 일반적으론 피함└── __init__.py# 내부 코드from mlopsstudy import data_loaderclass MlManager: ... 특별히 주의할 점패키지 이름은 반드시 소문자만 (import 시 ImportError 방지)MyPackage, MyLib처럼 대문자 포함된 패키지는..

entry point란?

entry point는 파이썬 패키지를 설치한 후, 터미널에서 명령어처럼 실행할 수 있도록 연결해주는 설정이다.쉽게 말해, **사용자가 직접 입력하는 명령어와 내부의 실행 함수(main)를 연결해주는 “실행 진입점”**이라고 볼 수 있어. 왜 필요한가?보통 파이썬 패키지는 import 해서 사용하는 방식이 일반적이지만, 툴처럼 설치만 하면 커맨드라인에서 곧바로 실행 가능한 패키지를 만들고 싶을 때는 명령어와 실행 함수를 연결해주는 entry point 설정이 필수야. 예를 들어:black main.py # → black 패키지의 entry point를 실행 구조 예시 (setup.py 안에서 설정)setup( ... entry_points={ 'console_scripts': ..

pyproject.toml vs setup.py: 파이썬 패키징 방식의 변화

파이썬으로 프로젝트를 패키지화하거나 배포하려고 할 때,예전에는 당연히 setup.py 파일을 사용했지만, 요즘은 **pyproject.toml**이라는 파일이 자주 등장한다.“둘 다 꼭 써야 하나?”“둘 중 뭐가 최신 방식일까?”“내 프로젝트에는 뭘 쓰는 게 맞을까?” 이 글에서는 pyproject.toml과 setup.py의 역할과 관계를 간단히 비교해보자. 파이썬으로 프로젝트를 진행하다 보면, 자연스럽게 코드를 재사용하거나 다른 사람과 공유하고 싶어진다.이럴 때 필요한 것이 바로 템플릿(template), 패키징(packaging), **배포(distribution)**의 단계다. setup.py: 전통적인 패키징 방식파이썬 프로젝트를 설치 가능한 형태로 만들기 위한 기존 방식setuptools와 함..

파이썬 프로젝트의 템플릿과 패키징, 간단 정리!

파이썬으로 프로젝트를 진행하다 보면, 자연스럽게 코드를 재사용하거나 다른 사람과 공유하고 싶어진다. 이럴 때 필요한 것이 바로 템플릿(template), 패키징(packaging), **배포(distribution)**의 단계다. 템플릿 (Template)템플릿은 프로젝트의 기본 구조를 빠르게 세팅해주는 뼈대디렉토리 구성, 기본 코드, 설정 파일 등이 포함되어 있음예: src/, tests/, setup.py, README.md가 미리 구성된 폴더✅ 템플릿은 패키징의 이전 단계라고 생각해도 무방하다.템플릿으로 구조를 먼저 세팅하고 → 그다음 패키징으로 넘기는 흐름이 자연스럽다!  패키징 (Packaging)패키징은 템플릿 기반으로 만들어진 프로젝트를설치 가능한 Python 패키지로 포장하는 과정핵심 파일..