프로그래밍 언어/Python

[Python] 모듈 - 패키지

dev_tina 2022. 9. 23. 11:22

모듈

모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일

모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다. 우리는 파이썬으로 프로그래밍을 할 때 굉장히 많은 모듈을 사용한다. 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어서 사용할 수도 있다. 여기에서는 모듈을 어떻게 만들고 사용할 수 있는지 알아보겠다.


자바에서 클래스의 종류를 크게 2가지로 볼 때. 하나는 메인함수가 있는 클래스 - 실행하는 역할

다른 하나는 도와주는 클래스.

 

파이썬은 함수, 변수, 클래스가 모아져 있는 파일을 '모듈'이라고 하며. 실행하는 역할을 한다.


파이참에서 아래 내용을 작성해서 저장.

주피터에서 해당 파일을 업로드

# mod1.py
def add(a, b):
    return a + b

def sub(a, b): 
    return a-b

※ 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다.


주피터 홈 화면에서 'new'로 모듈테스트 라는 이름으로 만들어준다.

아래와 같이 다양한 방식으로 동일한 결과를 얻는다


 

 

 


패키지란 무엇인가?

패키지(Packages)는  도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 예를 들어 모듈 이름이 A.B인 경우에 A는 패키지 이름이 되고 B는 A 패키지의 B모듈이 된다.

 

패키지 만들기

* 폴더 경로

game : __init__.py

/sound : __init__.py, echo.py, wav.py

/graphic : __init__.py, screen.py, render.py

/play : __init__.py, run.py, test.py

 

게임 패키지 만들기

__init__.py 파일이 들어있는 상태로 파이썬 패키지가 만들어진다.

 

하위 폴더들과 파일 만들기

 

디폴트는 패키지명부터 모듈명까지 전부 기재하는 것.

>>> import game.sound.echo
>>> game.sound.echo.echo_test()
echo
>>> from game.sound import echo

>>> echo.echo_test()
echo
>>> from game.sound.echo import echo_test

>>> echo_test()
echo

>>> import game.sound.echo as e

>>> e.echo_test()
echo
>>> from game.sound import echo as e

>>> e.echo_test()
echo

파일 안의 내용은 패키지명만 수정하여 동일하게 위 함수를 넣어주었다.


sound > __init__.py

__all__ = ['echo']

위와 같이 입력 후 저장을 하면 

game sound...

echo.echo_test()를 입력했을 때

echo 라고 출력되는 것을 볼 수 있다.

 

위와 같이 설정을 해주지 않으면 echo.echo_test()를 입력했을 때 아무것도 안 뜬다.


render.py 

from game.sound.echo import echo_test

def render_test():
    print('render')
    echo_test()

위와 같이 입력 후 저장

 

 

명령어

from game.graphic.render import render_test

아무것도 안 뜬다.

 

여기서 render_test() 라고 입력하고 엔터 치면

아래와 같이 render, echo 의 결과값을 볼 수 있다.


 

from game.sound.echo import echo_test
from ..sound.wav import wav_test


def render_test():
    print('render')
    echo_test()
    wav_test()

 

 

명령어

from game.graphic.render import render_test