Coding & Programming/Python 기초(A-Z)

[Python:파이썬:기초] 19. 모듈(Modules)

mainCodes 2021. 6. 1. 21:17

[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
 
#현재 시간 구하기
= 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()함수 호출
= platform.system()
print("플랫폼 정보 = ", r)
 
#platform 모듈 안의 processor()함수 호출
= platform.processor()
print("프로세서 정보 = ", 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 모듈에 있는 딕셔너리 사용
= test_hello.user_info["name"
print("test_calc.user_info[\"name\"] = ", r)
 
#test_hello 모듈에 있는 튜플 사용
= 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
 
= 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"])
 
= add(200100)
print("add(100, 200) = ", r)
 
= sub(150100)
print("sub(150, 100) = ", r)
 
#from test_calc import * 정의후 test_calc 모듈 안의 mul함수 사용
= mul(150100)
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(150100)        
print("tc3.add() = ", tc3.add())   #메소드 호출
print("tc3.sub() = ", tc3.sub())   #메소드 호출
tc3.add_print()    #메소드 호출
tc3.sub_print()    #메소드 호출
 
#클래스 내 변수값 변경
tc3.setVariables(500300)
tc3.add_print()
 
tc3.a = 1000 #변수값 변경
print("tc3.a = ", tc3.a) 
 
print("tc3  타입은 =", type(tc3))
print("tc3.a  타입은 =", type(tc3.a))
cs

 

🔗 실행결과(Output):

 

이상 JollyTree였습니다 (•̀ᴗ•́)و