Python 모듈과 패키지

minch·2021년 6월 16일
0

Python

목록 보기
6/13
post-thumbnail

Python 모듈 & 패키지

Python에 있는 기본적인 내장 함수를 제외하고 자체적으로 생성하거나 사람들과 직접 공유할 수 있는 변수, 함수, 클래스의 모음을 모듈(module)이라 하고, 그 모듈을 묶어 사용하는 것을 패키지(package)라고 한다.

모듈(module)

모듈은 기본적으로 'Python File(확장자 .py)'로 존재하며, 이 파일을 Python에 불러와 사용하는 것이다.

모듈 만들기

일단 간단하게 모듈 파일을 하나 만들어 보았다.
파일명은 mod1.py

mod1.py

def add(a, b):    
	return a + b

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

덧셈과 뺄셈을 하는 간단한 함수를 만들어 모듈 파일에 저장하고 만들었다.

모듈 불러오기

우선 모듈 파일을 불러와 사용하기 위해서는 저장한 디렉터리로 이동하여 접근하거나, 모듈 파일(mod1.py)과 불러오는 파일(main.py) 모두 같은 디렉터리 내에 존재 하여야 한다.

Import로 모듈 불러오기

main.py

import mod1
print(mod1.add(3, 4))
print(mod1.sub(4, 2))

위의 main.py를 실행해보면,

결과

7
2

이처럼 모듈 자체를 불러와서 main.py파일에 적용시킬 수 있는 것이다.

from import로 모듈 일부 불러오기

모듈을 통채로 가져오는 것 대신 그 안의 함수만 따로 가져오는 방법도 존재한다.

main.py

from mod1 import add
print(add(3, 4))
print(sub(4, 2))

결과

7
Traceback (most recent call last):
  File "/Users/choemin/Documents/Project/main.py", line 3, in <module>
    print(sub(4, 2))
NameError: name 'sub' is not defined

모듈의 함수 중 일부만 따로 불러오는 것이기 때문에 불러온add 함수만 적용되고 sub 함수는 에러가 뜨는 것을 볼 수 있다.

모듈의 전체 함수를 불러오는 방법은 *을 사용하면 된다.

main.py

from mod1 import *
print(add(3, 4))
print(sub(4, 2))

결과

7
2

패키지(package)

패키지는 모듈을 계층적으로 관리하는 방법으로,
패키지.모듈의 구조로 불러와 사용할 수 있다.

패키지 만들기

calc 패키지를 만들어서 간단한 사칙연산을 할 수 있는 모듈을 추가해주었다.

mod2.py

def mul(a, b):    
	return a * b

def div(a, b): 
	return a/b

directory

calc/
    __init__.py
    mod1.py
    mod2.py

__init__.py 의 용도 :
패키지 폴더 내에 __init__.py 파일이 존재하면 그 폴더를 패키지로 인식함.
(python 3.3 이상부터는 __init__.py 파일이 없어도 패키지로 인식가능)
파일 내 패키지를 불러올때 범위를 지정해주는 용도로 사용.

위의 디렉토리처럼 calc 폴더 내에 __init__.py 를 추가해 하위 버전의 python에도 인식되도록 만들어 주었다.

패키지 불러오기

Import로 패키지 불러오기

패키지를 불러오는 방법으로는 import 패키지.모듈로 불러와서
패키지.모듈.변수 or 패키지.모듈.함수or클래스() 형태로 사용할 수 있다.

main.py

import calc.mod1
import calc.mod2
print(calc.mod1.add(3, 4))
print(calc.mod1.sub(4, 2))
print(calc.mod2.mul(3, 4))
print(calc.mod2.div(4, 2))

결과

7
2
12
2.0

from import로 패키지 일부 불러오기

패키지도 모듈과 마찬가지로 from 패키지.모듈 import로 일부만 따로 불러올 수 있다.

main.py

from calc.mod1 import *
from calc.mod2 import *
print(add(3, 4))
print(sub(4, 2))
print(mul(3, 4))
print(div(4, 2))

결과

7
2
12
2.0

참조 : (https://dojang.io/mod/page/view.php?id=2447)

0개의 댓글