오늘은 모듈 만들기 및 사용법에 대해 알아보겠습니다.
모듈은 클래스, 함수, 변수 등을 정의해서 묶은 후 사용할 수 있도록 하는 스크립트 파일입니다.
확장자가 py인 파일들이며 파이썬에서는 많은 표준 모듈도 제공하고 있습니다.
상위 개념으로 패키지(package)가 있습니다. 패키지는 모듈을 묶어 놓은것입니다.
파이썬은 모듈을 얼마나 잘 사용하냐에 따라서 굉장히 많은 효율의 차이가 날 수 있습니다.
먼저 모듈을 만들어보겠습니다.
인수로 받은 값을 모두 더해서 반환해주는 모듈을 calculation.py로 만들어서 저장합니다. 저장한 이름이 모듈의 이름이 됩니다.
#calculation.py
def add(*num):
print('입력한 수 = ',num)
value = 0;
for i in num:
value += i
return value
이제 모듈을 사용해보겠습니다.
모듈을 사용하기 위해서는 import문을 사용해야 합니다.
import 모듈이름
그리고 모듈로 사용할 py와 메인 py파일은 같은 프로젝트 폴더 안에 있어야 합니다.
이제 위에 작성한 calculation.py를 사용해보겠습니다.
import calculation
value = calculation.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(value)
근데 calculation는 모듈명이 너무 기네요.
add()를 사용할 때마다 입력하려면 너무 번거로울 수 있으니 새롭게 일종의 별명을 지어주도록 하겠습니다.
여기에는 as를 사용합니다.
import 모듈명 as 별명
as를 이용하면 긴 모듈명이나 경로도 간단한 이름으로 사용이 가능합니다.
위에 예제를 as를 이용해서 수정하면 다음과 같습니다.
import calculation as cal
value = cal.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(value)
calculation을 전부 입력하지 않아도 cal로 간단하게 변경됐습니다.
근데 어차피 add()만 호출할거니 cal도 쓰기가 싫습니다. 이때는 모듈의 특정 클래스, 함수, 변수만 가져올 수 있습니다.
여기에는 from을 사용합니다.
from 모듈명 import 함수명
함수명은 ,를 이용해서 여러 개의 함수를 불러올 수도 있습니다.
모듈의 모든 클래스, 함수, 변수를 가져올수도 있습니다.
함수명 대신에 *을 입력하면 해당 모듈의 모든 클래스, 함수, 변수를 가져옵니다.
from 모듈명 import *
예제처럼 해당 모듈의 클래스, 함수, 변수를 가져오면 사용할때 모듈명을 붙이지않고 사용할 수 있습니다.대신 모듈명을 붙이면 에러가 발생합니다.
다시 예제를 수정해보겠습니다.
from calculation import add
value = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(value)
이제 모듈명 없이도 add를 호출할 수 있게 됐습니다.
단 똑같은 이름의 함수가 main에 존재한다면 충돌이 발생하기 때문에 복잡해질 수 있습니다.
모듈을 여러 가지 사용하다 보면 생각보다 겹치는 이름이 많습니다. 그러므로 신중하게 사용해야 합니다.
그리고 모듈 전체를 불러온 게 아닌 지정된 함수만 불러온 거라 모듈의 다른 함수는 사용할 수 없습니다.
as를 이용하면 함수명도 간단하게 변경이 가능합니다.
from calculation import add as a
value = a(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(value)
파이썬 보조프로그램을 사용하면 상관없지만 만약 모듈에 정의된 클래스나 함수등의 이름을 모두 확인하고 싶다면 내장 함수인 dir()을 사용하면 됩니다.
ex) dir(모듈명)
'공부 자료실 > 파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - 클래스 _ 변수의 종류 및 접근권한 (0) | 2020.07.14 |
---|---|
파이썬(Python) - 클래스(class) _ 클래스 생성 (0) | 2020.07.13 |
파이썬(Python) - 딕셔너리와 리스트, 튜플 (0) | 2020.07.09 |
파이썬(Python) - 딕셔너리(Dictionary) (0) | 2020.07.09 |
파이썬(Python) - 함수 (0) | 2020.07.08 |
댓글