본문 바로가기
IT/Python 기초

[Python] 모듈 정의 및 사용법

by Tony Jung 2024. 1. 23.
반응형
  • 모듈의 정의 및 사용법 

반적으로 모듈이라면 함수, 변수, 클래스를 모아놓은 파일을 지칭합니다. 많은 언어에서 비슷한 방식으로  정말 많이 사용하고 있답니다.

다른 사람이 많들어 놓은 모듈을 호출하여 사용하거나 직접 특정기능을 구현, 또는 비슷한 함수들을 모아서 편리하게 모듈로 사용할수 있답니다. 

모듈을 만들어 볼까요? 새로운 Python 페이지에 아래와 같이 한번 작성해보시기 바랍니다.

#Module1.py

def m_add(a,b):
	return a+b
def m_multi(a,b):
	return a*b

위의 m_add 함수는 매개변수 a와 b의 합을 리턴 시켜주며, m_multi 함수는 a와 b의 곱을 리턴 시켜주는 함수 입니다. 일반적인 python 파일의 코드와 동일하지요. 

자 이젠 모듈을 만들었으니 모듈을 불러와야겠지요? 새로운 페이지에서 생성한 모듈페이지인 Module1.py를 import 해주셔야 됩니다. 아래의 2가지 Case로 Import 해볼게요. 

#Case1
#Module_Call.py
import module1

Result=module1.m_add(1,3)
print(Result)

우선 모듈로 작성한 Module1.py파일을 import 할때는 확장자는 빼고 파일명으로만 Import  하셔야 합니다.

첫번째 Case는 파일명으로 import 한것으로 이때는 해당 파일에 정의되어 있는  모든 함수를 호출 하여 사용할 수 있습니다.호출 하실때는 module1.add 와 같이 모듈명.함수명 방식으로 호출해서 사용합니다. 

다음 Case는 import 할때  모듈 페이지에 포함된 모든 함수를 호출 하지않고 특정한 함수만을  호출해서 사용할 때 import하는 방식입니다. 

"from 모듈이름 import 모듈함수"

#Case2
#module_call.py
from module1 import add
Result=m_add(1,3)
print (Result)

이렇게 하면 module1의 m_add 함수만 사용할 수 있게됩니다. 다만 해당 모듈의 함수를 사용하실 때  Case1과 다르게 Result=m_add(1,3) 과 같이 "함수명"으로만  편리하게 호출하며 사용하실 수 있습니다. 

m_add 함수 뿐 아니라 m_multi 함수도 같은 방법으로 함수명만 호출하여 사용을 원하실 경우 아래의 방식도 가능합니다. 

#m_add,m_multi를 함수명으로만 사용하고 싶을때
from module1 import m_add,m_multi

#moudle1의 모든 함수를 함수명으로만 사용하고 싶을 때 
from module1 import *

 

반응형

 

두가지 Case중 원하는 방식으로 Import하여 사용하시면 됩니다. 저는 개인적으로 첫번째 Case를 주로 사용한답니다. 코드를 위로 올려 import 문을 보지 않고 코드만 보더라도 어느 모듈에서 호출해왔는지 확인하는게 편해서 이지요. 

  • 클래스와 변수를 포함한 모듈

모듈은 당연히 "클래스"와 "변수" 등도 포함될 수 있습니다. 다음 예시를 한번 볼까요?

#module2.py

M_Text="Tony"

class Class_Tony:
    def Call_Tony(self):
        return M_Text +" is smart"


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

module2에는 변수 (M_Text)와  클래스 (Class_Tony) 그리고 함수 (m_div) 가 있습니다. 

#module2_call.py
import module2

#module2의 변수값 사용
print (module2.M_Text)

#module2의 클래스 호출 
Result=module2.Class_Tony().Call_Tony()

print (Result)

module2를 import 시킨 후 module2.M_Text 와 같이 모듈안의 변수를 사용할 수 있습니다. 예시는 출력입니다만, 물론 모듈안의 변수값을 현재 페이지에 변수에 담아서 사용할 수 도 있겠지요.

클래스를 하용할 때는 "모듈.클래스.클래스함수" (module2.Class_Tony().Call_Tony())  식으로 호출하면 됩니다. 인자값이 있다면 넘겨주시면 일반 함수와 같이 넘겨주시면 사용이 가능합니다. 

결과값은 당연히도(?) "Tony is Smart"가 출력되겠지요 ^^

자 이번포스팅에서는 모듈사용법을 알아봤답니다. 대부분 코드가 길어지고 복잡해질 때쯤 모듈의 필요성을 느끼실 것입니다.ㅎㅎ 이젠 모듈 사용에 적응 되시면 프로그래밍을 설계할 때 주요 기능에 대해 모듈화를 정의하고 시작하면 조금 더 체계적인 개발을 할 수 있기에 적극 사용을 추천 드립니다! 

 

 

 

반응형

댓글