본문 바로가기

프로그래밍언어/Python

[Python] module, package, library

반응형

1. module

 

코드를 잘 구성하기 위해서는 서로 연관이 있는 코드들을 모아서 그룹화해야한다. 모듈은 일반적으로 하나의 .py 파일에 저장된 연관된 코드 더미를 말한다. 모듈에는 함수, 클래스, 변수 또는 실행 가능한 코드 등을 선택하여 정의할 수 있다.

 

이렇게 저장된 모듈들을 애플리케이션에서 사용하기 위해서는 import 구문을 사용하여 해당 모듈을 가져와야 합니다. 모듈을 import 한 후에 모듈안에 있는 context 들을 module.context, module.function() 등의 문법으로 사용할 수 있다.

 

모듈에 있는 특정 요소만 사용하고 싶은 경우에는 from module import item 과 같은 형식으로 사용하여 모듈 전체가 아니라 해당 요소만 import 할 수 있다.

 

# hello.py
def print_hello(name):
	print("Hello {}".format(name))

 

# main.py
import hello

hello.print_hello("jamie") # Hello jamie

from hello import print_hello

print_hello("rachel") # Hello rachel

 

 

2. package

 

애플리케이션이 커지면서 모듈들이 많아지면 이를 잘 구분하여 구성해야한다. 이때 패키지 개념이 들어오게 된다. 일반적으로 패키지는 모듈 컬렉션이 위치하고 있는 디렉토리를 의미한다. 패키지는 모듈 namespace 의 계층 구조를 구성하도록 한다.

패키지 또는 서브 패키지로 인식되기 위해서는 해당 디렉토리에 init.py 라는 이름의 파일이 위치해야 한다. 이 파일은 보통 해당 패키지의 코드들을 초기화 하는 내용들을 담고있다.

 

 

패키지 내부의 모듈들은 각각 ‘.’ 을 통해서 namespace 를 가져와서 import 할 수 있다. 위와 같은 패키지가 구성되어 있는 경우에는 다음과 같이 사용할 수 있다.

 

# main.py
import package1.hello
from package2.bye import *
from package3.hi import say_hi

 

 

 

3. library

 

라이브러리는 재사용가능한 코드들을 참조할 때 사용하는 포괄적인 용어이다. 파이썬 라이브러리는 용도에 따라 관련되어 있는 모듈과 패키지들을 모아놓은 컬렉션을 포함하고 있다. 파이썬 패키지 또한 모듈과 다른 패키지 들을 포함할 수 있기 때문에 라이브러리와 파이썬 패키지가 혼동되어 사용되고 한다. 둘의 명확한 차이점은 패키지는 모듈들의 컬렉션이고 라이브러리는 패키지들의 컬렉션이라는 점이다.

 

 

4. framework

 

라이브러리와 비슷하게 프레임워크도 모듈과 패키지들의 컬렉션이다. 프레임워크는 사용자가 간편하게 개발 프로세스를 진행할 수 있도록 하는 모듈과 패키지들을 모아두었다. 일반적으로 라이브러리는 특정 기능을 수행하기 위한 패키지들을 포함하고 있는 반면에 프레임워크는 일반적인 애플리케이션의 흐름과 아키텍쳐를 포함하고 있기 때문에 프레임워크가 라이브러리보다 더 복잡하다.

파이썬 프레임워크는 애플리케이션을 만들 수 있는 필수적인 개발 블럭들을 제공해준다. 사용자는 이러한 기능을 통해 애플리케이션을 개발할 수 있다.

 

 

[reference]

https://learnpython.com/blog/python-modules-packages-libraries-frameworks/

 

Difference Between Python Modules, Packages, Libraries, and Frameworks

Let’s discuss the difference between Python modules, packages, libraries, and frameworks – in simple terms and with multiple examples.

learnpython.com

반응형

'프로그래밍언어 > Python' 카테고리의 다른 글

[Python] Awaitable  (0) 2022.04.19
[Python] Decorator  (0) 2022.04.01
[Python] copy  (0) 2022.02.08
[Python] Magic method - 속성 관리  (0) 2021.12.16
[Python] Magic method - 객체 표현  (0) 2021.12.15