python
-
모듈, 패키지, 라이브러리, 그리고 프레임워크python 2026. 1. 13. 15:01
파이썬을 공부하다 보면 비슷한 듯 다른 용어들이 등장합니다. 이들의 포함 관계(규모)와 역할의 차이를 명확히 정리해 봅니다. 크기로 보는 포함 관계 (계층 구조)가장 작은 단위인 모듈부터 가장 거대한 구조인 프레임워크까지의 관계는 다음과 같이 표현할 수 있습니다.$$\text{Module} \subset \text{Package} \subset \text{Library} \subset \text{Framework}$$점점 더 큰 개념이 작은 개념을 포함하는 구조입니다.모듈 (Module).py 확장자를 가진 파일 하나입니다.변수, 함수, 클래스 같은 작은 부품들이 들어 있습니다.비유: 레고 블록 한 조각패키지 (Package)모듈 여러 개를 모아놓은 폴더(디렉토리)입니다.관련 있는 모듈끼리 묶어 관리하며..
-
가변 인자와 Packing/Unpacking의 원리python 2026. 1. 13. 10:29
파이썬 코드를 보다 보면 함수 정의나 호출부에서 별(*)이 붙은 변수들을 종종 마주치게 됩니다. def my_func(*args, **kwargs): ...보통 가변 인자(Variable Arguments)라고 부르는 이 문법은 파이썬의 유연함을 담당하는 핵심 기능입니다. 단순히 "인자를 많이 받을 수 있다"를 넘어서, Packing과 Unpacking(풀기)이라는 개념을 정확히 이해해야 자유자재로 다룰 수 있습니다.오늘은 이 *args와 **kwargs가 내부적으로 어떻게 작동하는지, 그리고 왜 함수 호출 시 func(*args)와 같이 사용하는지 정리해 보겠습니다. 가변 인자(Variable Arguments)란?함수를 만들 때 인자의 개수가 몇 개가 될지 미리 알 수 없는 경우가 있습니다. ..
-
제너레이터(Generator) 활용 예제python 2026. 1. 11. 23:51
코딩을 하다 보면 데이터가 너무 커서 MemoryError가 발생하거나, 무한히 반복되는 데이터를 다뤄야 할 때가 있죠. 이럴 때 리스트(List) 대신 제너레이터를 사용하면 메모리 효율을 극적으로 높일 수 있습니다.제너레이터(Generator)란?제너레이터는 이터레이터(Iterator)를 생성하는 함수입니다.쉽게 비유하자면, 리스트(List)가 이미 만들어진 음식 100접시를 식탁에 한 번에 올려두는 것이라면, 제너레이터는 주문이 들어올 때마다 요리사가 음식을 하나씩 만들어 내어주는 것과 같습니다.이를 지연 평가(Lazy Evaluation)라고 합니다. 데이터가 필요할 때(호출될 때) 비로소 생성하기 때문에 메모리를 거의 쓰지 않습니다.핵심 키워드: yield일반 함수는 return을 만나면 값을 ..
-
Closure, 도대체 왜 쓰는 걸까?python 2026. 1. 9. 15:55
파이썬을 공부하다 보면 '클로저(Closure)'라는 개념을 마주하게 됩니다. "함수 안에 함수가 있고... 바깥 변수를 기억한다?" 문법적인 정의는 알겠는데, 도대체 "이걸 실무에서 왜, 언제 써야 하는지" 명확하게 와닿지 않을 때가 많습니다.그냥 전역 변수를 쓰거나 클래스를 만들면 될 것 같은데 말이죠. 오늘은 클로저를 사용하는 결정적인 이유 3가지를 실전 예제와 함께 정리해 봅니다. 데이터 은닉과 안전성 (전역 변수의 대안)어떤 값을 계속 기억(유지)해야 하는데, 이 값이 아무나 건드려서는 안 되는 중요한 값일 때 클로저가 빛을 발합니다.❌ 안 좋은 예: 전역 변수(Global) 사용전역 변수는 어디서든 접근 가능하기 때문에, 다른 함수나 로직에서 실수로 값을 덮어쓸 위험이 큽니다.# 전역 변수:..
-
Iterable ? Iterator? Generator?python 2026. 1. 9. 03:53
파이썬을 공부하다 보면 for 문을 수도 없이 사용하게 됩니다. 하지만 Iterable, Iterator, Generator라는 용어가 나오면 갑자기 머리가 복잡해지죠."리스트도 반복되고, 제너레이터도 반복되는데 도대체 무슨 차이지?"오늘은 이 세 가지 개념의 정확한 정의와 포함 관계(상속 관계)를 코드로 확실하게 정리해 보겠습니다.한 눈에 보는 포함 관계 (The Big Picture)결론부터 말하면, 이들은 별개의 개념이 아니라 수학의 부분집합(Subset) 혹은 상속(Inheritance) 관계를 가집니다.Iterable ⊃ Iterator ⊃ Generator(이터러블이 가장 크고, 제너레이터가 가장 작습니다.)Iterable: 반복 가능한 모든 것 (가장 큰 범위)Iterator: 이터러블 중에..