Post

Namespace, Module, Package, Library, Framework

파이썬의 모듈과 네임스페이스, 패키지, 라이브러리, 프레임워크가 각각 무엇을 뜻하는지 구분해 정리했습니다.

Namespace, Module, Package, Library, Framework

호스팅으로 올려둔 이미지를 복구할 수가 없네요. 글이라도 도움되시길

Module


하나의 스크립트 프로그램. 즉, 함수/변수/클래스 등을 모아놓은 파일.

확장자(.py)를 포함하지 않는 파일 이름 자체를 모듈 이름으로 사용

왜 사용하는가?

  1. 다른 파일에서 재사용
  2. 전체 코드가 너무 커서 여러 파일로 나눠 정리

Namespace


1
2
def hello():
	print("Hello, World!")
1
2
3
import test_module

test_module.hello()

hello() 함수를 호출할 때, test_module.을 붙히지 않으면?

파이썬은 실행된 파일인 main.py에서만 hello()라는 함수를 찾을 것이고, 에러가 발생할 것임.

. 앞에 있는 import 하는 영역을 만드는 이 구조를 Namespace라고 한다.

Package


나뉘어진 코드들을 하나의 Module로 불러와 사용할 수 있게 해줌.

패키지는 모듈의 묶음.

Package를 불러온다면, Module1.py, Module2.py, Module3.py를 모두 불러온 것임.

1
2
3
4
5
import package.module1
form package.module2 import function2

package.module1.function1()
function2()

일반 디렉토리가 아닌 패키지임을 인식하기 위해서는 각 폴더마다 __init__.py라는 파일을 생성해야 한다.

Library


Package를 모아놓은 개념

예시

  • numpy - 다차원 배열과 행렬 연산 특화 라이브러리
  • requests - HTTP 요청을 주고 받는 데 사용되는 라이브러리

Framework


사전적 정의: 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임

라이브러리와 프레임워크의 가장 큰 차이점프로그래밍 할 때 규칙이 정해져 있다는 것이다.

프레임워크는 프로그래머가 프레임워크에 정해둔 틀 안에 필요한 코드를 작성하고, 라이브러리는 사용자가 필요한 상황에 가져다 쓴다.

예시

  • django - 웹 앱을 개발하기 위한 프레임워크
  • flask - 상동
  • PyTorch - 딥러닝 및 머신 러닝 작업을 위한 프레임워크
  • TensorFlow - 상동

결론적으로 Framework $\subset$ Library $\subset$ Package $\subset$ Module이라고 볼 수 있다.



참고

This post is licensed under CC BY 4.0 by the author.