파이썬을 공부하다가 라이브러리를 사용하는 단계에 이르면 패키지, 모듈, 클라스 등등의 모호한 단어들로 인해 혼란을 겪에 된다.. 나만 그런가?
아무튼 오늘 나에게 혼란을 주는 패키지, 모듈, 클라스..(라이브러리, 프레임워크, 함수, 변수 등등)를 정리해보고자 한다.
개괄적인 구조는 다음과 같다. (글씨에 집중하지 말고 내용에 집중하자)
크게 패키지 - 모듈 - 클래스 계층 구조로 구성된다.
하나씩 살펴보자.
특정 기능을 가진 Python모듈들이 담겨 있는 폴더
pip install
_ 을 통해 설치하고 import
를 통해 사용하는 바로 그것.
목적-패키지 paring
- 통계분석 -> numpy
- 시각화 -> matplotlib
- 딥러닝 -> Scikit-learn, Tensorflow
- 자연어처리 -> NLTK
패키지는 라이브러리와 프레임워크로 구분된다. (면접 단골질문)
- 라이브러리: 사용자가 주관적으로 사용할 수 있는 패키지
- 프레임워크: 사용 구조가 강제되는 패키지
특정 기능을 가진 함수(def)나 변수가 담겨있는 파일
예를 들어 피보나치 수열을 찾는 기능을 def()를 통해 정의했다고 치자.
# Fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
위 함수들을 하나의 파일에 넣고 모듈 이름에 확장자 .py
를 붙이면 fibo.py
라는 이름의 모듈이 생성된다.
이 후 파이썬 인터프리터에서 import fibo
를 넣고 실행하면, 해당 모듈 속 함수를 사용할 수 있게 된다.
fibo.fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
fibo.fib2(100)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
fibo.__name__
'fibo'
사실상 모듈 하나만 이해해도 패키지와 클라스는 자동으로 이해할 수 있다.
패키지
비슷한 기능을 하는 모듈들을 집합이 패키지
모듈
모듈은 하나의 .py 파일로 구성된 코드 단위로, 함수, 클래스, 변수 등을 포함할 수 있다.
클라스
모듈을 구성하는 함수와 변수를 클라스 라고 한다.
클래스는 함수와 변수를 포함할 수 있는 하나의 객체 지향적인 구조일 뿐, 모듈 전체를 구성하는 것은 아니다.
ex)
# my_module.py
PI = 3.14159 # 상수
def add(a, b): # 함수
return a + b
class Circle: # 클래스
def __init__(self, radius):
self.radius = radius
def area(self): # 클래스 메서드
return PI * (self.radius ** 2)