본문 바로가기
컴퓨터 프로그래밍/python

Python 모듈, 패키지

by JaeBaek 2020. 8. 16.

python의 module과 package에 대해서 알아보도록 하겠습니다. 

 

Package (Pixabay)

■ 모듈 (module)

 보통 코드를 작성한다고 하면 복잡하고 긴 프로그램을 작성하는 것은 되게 어렵고 어지러울 뿐더러 비효율적이기 때문에 여러 파일로 코드를 나누어서 실행하는 스크립트를 사용합니다. 어떠한 목적, 기능을 가지는 프로그램을 적절하게 기능끼리 분배를 함으로써 각각의 부품만을 교체, 수정 등을 하여 유지보수가 쉬워지는 것을 알 수 있습니다. 

 

 Visual Studio Code를 사용하여 module의 예시를 들어보도록 하겠습니다. 

우선 동일한 파일안에 두 가지 파일을 실행해주세요. mod.py를 하나와 다른 파이썬 파일에서 실행을 참고 해볼 exce.py파일 2개를 만듭니다.

module // mod.py

def price(people):

    print("The price for {0} people : {1} won".format(people,people*10000))

 

def price_jojo(people):

    print("The price for {0} people with jojo : {1} won. ".format(people,people*8000))

 

def price_kids(people):

    print("The price for {0} kids : {1} won".format(people,people*6000))

 

# price(3)

# price_jojo(3)

# price_kids(3)

result

The price for 3 people : 30000 won
The price for 3 people with jojo : 24000 won.
The price for 3 kids : 18000 won

다음과 같은 코드를 mod.py에 작성하였습니다. 그러면 이 기능을 다른 .py 파일에서도 실행을 하는 방법에 대해서 알아보도록 하겠습니다.

 

# 1

module // exce.py

import mod

mod.price(3)

mod.price_jojo(3)

mod.price_kids(3)

result

The price for 3 people : 30000 won 
The price for 3 people with jojo : 24000 won. 
The price for 3 kids : 18000 won

 

# 2

module // exce.py

import mod as mv

mv.price(3)

mv.price_jojo(3)

mv.price_kids(3)

result

The price for 3 people : 30000 won 
The price for 3 people with jojo : 24000 won. 
The price for 3 kids : 18000 won

# 위와 동일한 결과를 보이지만 이름이 길어서 적기가 힘들다면 import module as mv로서 이름을 줄여 간단하게 표기하시면 됩니다.

 

# 3

module// exce.py

from mod import *

price(3)

price_jojo(3)

price_kids(3)

result

The price for 3 people : 30000 won 
The price for 3 people with jojo : 24000 won. 
The price for 3 kids : 18000 won

# from module import * 과 같은 기능을 쓰면 더 간단하게 함수만을 꺼내와서 사용을 할 수 있습니다.

 

# 4

module // exce.py

from mod import price, price_jojo

price(5)

price_jojo(4)

result

The price for 5 people : 50000 won
The price for 4 people with jojo : 32000 won.

# 모든 기능을 사용하고 싶다면 위 처럼 *을 사용하고 아닌 경우에는 각 함수의 기능이름만을 클릭하면 됩니다.

 

 

■ 패키지 (package)

개별적인 모듈을 불러오는 것들을 알아보았습니다. 대규모 코드를 작성해야 하는 경우 각각의 기능에 해당하는 코드를 활용을 해야합니다. 처음부터 모든 코드를 다 작성할 수는 없고 그럴 필요도 없습니다. 모듈의 수가 많아지면 그만큼 관리도 어려워지는데 모듈을 관리하기 위한 상위의 패키지라는 개념이 필요합니다. 

 

animal이라는 파일안에 cat.py와 hippo.py 파이썬 파일을 2개 만들어 주겠습니다. 

# cat.py

class CatPackage:

    def detail(self):

        print("고양이의 수명은 2-12년 입니다.")

# hippo.py

class HippoPackage:

    def detail(self):

        print("하마는 수명이 40-50년 입니다.")

 

 

package

from animal import cat

ani=cat.CatPackage()

ani.detail()

 

from animal import hippo

ani=hippo.HippoPackage()

ani.detail()

result

고양이의 수명은 2-12년 입니다.고양이의 수명은 2-12년 입니다.
하마는 수명이 40-50년 입니다.

이렇게 다음과 하나의 파일안에 여러 개의 모듈을 가져올 수 있는 것을 알 수 있습니다. 

먼저 animal이라는 폴더에서 cat파일을 import 한 다음 cat파일에 대한 CatPackage 속성을 ani 변수에 저장을 하고, detail() 기능을 출력을 하는 것입니다.

 

★ __init__.py

__init__.py 파일을 만들어서 다음과 같은 입력을 해줍니다.

# __init__.py 

__all__=["cat","hippo"]

그런 다음 다음과 같이 원래 파일 exce.py로 돌아와서 다음과 같이 입력합니다.

__init__.py

from animal import *

ani=cat.CatPackage()

ani.detail()

result

고양이의 수명은 2-12년 입니다.

결과는 다음과 같이 나오는 것을 알 수 있습니다. 

 

 

이렇게 몇개 안되는 파일은 간단하게 적으실 수 있겠지만 대량의 코드를 작성을 하는 경우에는 정리를 잘 해야합니다. 따라서 이 기능들을 잘 기억을 해 놓으시고, 복잡한 코딩도 간단하게 불러오고 참조하고 그러시길 바랍니다.

'컴퓨터 프로그래밍 > python' 카테고리의 다른 글

Python 클래스 (Class)  (0) 2020.08.16
Python 파일 (file)  (0) 2020.08.14
Python 예외 처리 (exception process)  (0) 2020.08.14
Python 표준 모듈  (0) 2020.08.13
Python 컬렉션(Collection)  (0) 2020.08.13

댓글