[Python:파이썬:기초] 19. 모듈(Modules)
안녕하세요 JollyTree입니다 (•̀ᴗ•́)و
모듈은 일종의 라이브러리 코드로 변수, 함수, 클래스를 파일 형태로 저장하여 특정 기능을 하는 코드들을 모아놓은 것입니다. 파이썬은 내부적으로 다양한 내장 모듈(built-in modules)을 지원하며 내장 모듈은 파이썬 표준 라이브러리에 포함되어 있습니다. 이는 import 키워드를 이용하여 바로 사용할 수 있습니다. 또한 모듈을 사용자가 직접 만들어서 사용할 수도 있습니다.
기본적인 모듈의 import 방법은 다음과 같이 아주 간단합니다.
import 모듈이름 |
모듈의 사용 범위
- 파이썬 자체에서 지원하는 내장 모듈을 사용할 수 있음 - 인터넷에 공개된 모듈을 설치하여 사용할 수 있음 - 직접 개발한 모듈을 사용할 수 있음 |
파이썬 내장 모듈은 구현된 코드를 사용할 수 있으므로 코드를 간결하게 해 주고 코딩 시간을 줄여주니 어떤 모듈들이 있는지 알아두면 정말 유용합니다. 파이썬 내장 모듈이 포함되어 있는 파이썬 표준 라이브러리에 대한 정보는 아래 링크에서 확인할 수 있습니다.
※ The Python Standard Library: https://docs.python.org/3/library/index.html
아래 예제들은 총 4개의 파이썬 소스코드 파일(test.py, test_calc.py, test_class.py, test_hello.py)을 사용합니다. test.py와 모듈 파일인 test_calc.py, test_class.py, test_hello.py는 같은 디렉토리에 있거나 또는 파이썬 라이브러리가 설치된 디렉토리에 모듈 파일들이 있어야 에러 없이 컴파일이 됩니다.
🔗 내장 모듈 사용 예제(Example):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 파이썬 내장 모듈(표준 라이브러리) 사용하기
import time
from time import gmtime #gmtime 함수 선택
import platform
import random
#현재 시간 구하기
r = time.localtime()
print("로컬 타임 = ", r)
# from time import gmtime를 정의했기 때문에
# gmtime()함수는 time.gmtime() 형식이 아닌 직접 gmtime() 함수형태로 호출 가능
print("날짜 = ", time.strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))
#platform 모듈 안의 system()함수 호출
r = platform.system()
print("플랫폼 정보 = ", r)
#platform 모듈 안의 processor()함수 호출
r = platform.processor()
print("프로세서 정보 = ", r)
#랜덤 값 생성
r = random.random()
print("랜덤 값 = ", r)
|
cs |
🔗 실행결과(Output):
🔗 사용자 모듈 생성 예제(Example):
표준 라이브러리 외에 사용자가 직접 모듈을 생성할 수 있습니다. 예제는 test_hell.py라는 이름으로 파이썬 소스코드 파일을 만들었고 test.py는 test_hell.py 모듈을 사용하기 위해 모듈의 파일명에서 확장자 .py를 제외한 test_hello 파일명만을 사용하여 모듈을 import 하였습니다.
예제 test.py는 test_hello.py를 import 한후 user_info 변수(dictionary)와 fruits 변수(tuple)를 참조하는 것을 보여줍니다.
test_hello.py
1
2
3
4
5
6
|
#딕셔너리 변수 선언
user_info = { 'name':'홍길동', 'gender':'남성', 'number': '12345', 'phone':'010-123-4567'}
#튜플 변수 선언
fruits = ('apple', 'watermelon', 'persimmon')
|
cs |
test.py
1
2
3
4
5
6
7
8
9
|
import test_hello #직접 만든 모듈
#test_hello 모듈에 있는 딕셔너리 사용
r = test_hello.user_info["name"]
print("test_calc.user_info[\"name\"] = ", r)
#test_hello 모듈에 있는 튜플 사용
r = test_hello.fruits[1]
print("test_calc.fruits[1] = ", r)
|
cs |
🔗 실행결과(Output):
🔗 모듈 이름 바꾸기(Example):
모듈 이름은 import와 as 키워드를 이용하여 다음과 같이 재정의(변경) 하여 사용할 수 있습니다. 예제는 test_hello라는 모듈을 mcode로 이름을 재정의하는 것을 보여줍니다. 변경 후에는 모듈 내 메소드나 변수를 참조할 때 test_hello 대신 변경된 이름인 mcode를 사용합니다.
1
2
3
4
|
import test_hello as mcode
r = mcode.user_info["phone"]
print("mx.user_info[\"phone\"] = ", r)
|
cs |
🔗 실행결과(Output):
🔗 특정 함수, 변수만 import 하기(Example):
다음 예제는 원하는 변수, 함수만을 선택적으로 import 하는 예제입니다. test_calc.py 모듈은 add, sub, mul이라는 간단한 메소드가 정의되어 있습니다. 특정 함수, 변수만 import 하기 위한 기본 형식은 다음과 같습니다.
from 모듈이름 import 함수이름, 변수이름 #모듈에서 특정 함수, 변수만 import from 모듈이름 import * #모듈내 모든 것을 import |
test_calc.py
1
2
3
4
5
6
7
8
9
|
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
|
cs |
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from test_hello import user_info #test_hello 딕셔너리 import
from test_calc import add, sub #test_calc모듈의 add, sub함수 import
from test_calc import * #모든 함수 import
print("user_info[\"number\"] = ", user_info["number"])
r = add(200, 100)
print("add(100, 200) = ", r)
r = sub(150, 100)
print("sub(150, 100) = ", r)
#from test_calc import * 정의후 test_calc 모듈 안의 mul함수 사용
r = mul(150, 100)
print("mul(150, 100) = ", r)
|
cs |
🔗 실행결과(Output):
🔗 클래스 import 해서 사용하기(Example):
다음 예제는 import 한 클래스를 참조하는 예제입니다. 클래스를 import해서 사용하는 것은 "모듈명.클래스명" 형식을 이용하여 객체를 생성한 후 일반 클래스를 사용하는 것과 동일합니다.
test_class.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 메소드가 포함된 클래스
class testClass3:
#생성자
def __init__(self, a, b):
self.a = a
self.b = b
#메소드 선언
def setVariables(self, a, b):
self.a = a
self.b = b
#메소드 선언
def add(self):
return self.a + self.b
#메소드 선언
def sub(self):
return self.a - self.b
#메소드 선언
def add_print(self):
print("a+b = ", self.add()) #add 메소드 호출
#메소드 선언
def sub_print(self):
print("a-b = ", self.sub()) #sub 메소드 호출
|
cs |
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import test_class
#객체(변수) 생성
tc3 = test_class.testClass3(150, 100)
print("tc3.add() = ", tc3.add()) #메소드 호출
print("tc3.sub() = ", tc3.sub()) #메소드 호출
tc3.add_print() #메소드 호출
tc3.sub_print() #메소드 호출
#클래스 내 변수값 변경
tc3.setVariables(500, 300)
tc3.add_print()
tc3.a = 1000 #변수값 변경
print("tc3.a = ", tc3.a)
print("tc3 타입은 =", type(tc3))
print("tc3.a 타입은 =", type(tc3.a))
|
cs |
🔗 실행결과(Output):
이상 JollyTree였습니다 (•̀ᴗ•́)و