CS/Python

2. 파이썬 모듈

bonggang 2019. 7. 11. 02:02

일부 사람들은 파이썬을 모듈때문에 사용한다는 말을 한다. 이것은 그만큼 파이썬의 모듈이 체계적으로 잘 관리되고 있기 때문이다.

 

모듈이란 자주 사용되는 코드나 유용한 코드를 논리적으로 묶어서 관리하고 사용할 수 있도록 하는 것이다. 파이썬에선 .py파일이 하나의 모듈이 된다. 이 모듈 안에는 함수, 클래스 혹은 변수들이 정의될 수 있고 실행 코드 역시 포함될 수 있다.

 

내장모듈

모듈 역시 help()를 사용할 수 있다. 위 사진은 모듈의 일부이다. 직접 help("modules")를 입력해서 목록을 확인하자.

그렇다면 이 모듈들을 어떻게 사용할까?

모듈을 사용하기 위해서는 import를 함께 사용해주면 된다. import는 하나 혹은 복수의 모듈을 불러들이는 역할을 한다.

 

import 모듈
import 모듈1, 모듈2
import 모듈 as 별명
from 모듈이름 import 모듈함수

 

실제 코드에서 활용되는 모습을 보자.

import datetime

curTime = datetime.datetime.now()
print(curTime)

모듈 만들기

그렇다면 우리가 모듈을 만들 수는 없을까? 당연히 우리도 모듈을 만들 수 있다!

가장 간단한 예시인 더하기, 뺴기 모듈을 구현해보자.

 

myMod.py

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

모듈이라고 해서 특별한 건 없다. 그냥 하던대로 더하기, 빼기 함수를 구현해서 저장해주면 된다.

그리고 다른 파일을 생성해서 내가 만든 모듈을 불러주면 된다.

import myMod

print(myMod.add(1,2))
print(myMod.sub(2,1))

myMod.add를 쓰기 귀찮을 경우

from myMod import *
#from myMod import add,sub

print(add(1,2))
print(sub(2,1))

또한 가능하다.

 

하지만 만일 내가 만든 모듈이 재사용 된 것이고, 이전에 사용할 때 print기능을 사용해야 할 일이 있었다면 어떻게 될까? 이해하기 어렵다면 코드로 살펴보겠다.

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

print(add(1,2))
print(sub(2,1))

 내가 만든 모듈이 사실 이전에 쓰던 것들이라서 이런 식으로 print함수를 사용했었다면 실행 시 어떻게 될까?

 

나는 import만 해줘도 print 함수 부분이 호출이 되서 3,1이 출려되게 된다.

이것을 방지하기 위해 우리는 __name__="__main__"을 사용한다. 즉, 본 모듈이 main으로 사용될 때 즉, 직접 실행될 때만 출력되게 해주겠다라는 뜻이다.

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

if __name__ == "__main__":
    print(add(1,2))
    print(sub(2,1))

 

이렇게 단순 작업을 하는 모듈에서는 불편함을 느끼지 못하지만 좀 더 효율적인 모듈을 구상하기 위해서는 클래스를 잘 활용해주어야한다. 모듈에 클래스를 포함시키려면 어떻게 해야할까?

이번에도 특별한 것은 없다.

myMod2.py

plyaer='구자욱'

class makePlayer:
	def makeName(self, name):
    		return name

def func1(first):
	return "say hi to %s"%first

 이 모듈을 사용하는 법 역시 똑같다.

import myMod2

a = myMod2.makePlayer()
print(a.makeName('박해민'))

myMod2.func1('박해민')