Appia의 IT세상

파이썬[Python] 009 모듈(Module) 본문

Python/Python 기본

파이썬[Python] 009 모듈(Module)

Appia 2019. 12. 25. 19:31
반응형

앞서서 함수에 대해서 살펴보았습니다. 오늘은 간단하게 모듈에 대해서 살펴보고자 합니다. 설명에 앞서, 2000줄이 넘는 코드를 소스 파일에 넣는다면, 추가하고자 하는 기능 또는 수정하고자 하는 항목을 찾기가 쉬울까요? 아마도 쉽지 않습니다. 그래서 이러한 부분들을 고려하여 코드를 정리 하기 위해서 모듈이라는 별도의 파이썬 파일을 이용하여 정리할 있습니다.

 

모듈은 함수, 클래스 , 변수 등으로 구성됩니다. 관련해서 간단하게 예시를 살펴보겠습니다. example.py 구성됩니다.

 

def addf( par ): 
	print ( par )
	return

 

외부 모듈을 불러올 때는 다음과 같은 명령어를 이용합니다.

 

import module1

 

위의 내용으로 구성된 example.py 불러오기 해보겠습니다. C 따지면, include라고 보시면 됩니다.

 

import example
example.addf("Zara")

 

실행하면 다음과 같은 결과가 나옵니다. 

 

Zara

 

from ... import * 구문 

위의 예시를 살펴볼 때, 모듈 내에 함수를 사용하기 위해서는 모듈이름.함수 구조로 실행을 했습니다. 하지만, 이런 부분이 번거러우시다면, 모듈에 관련된 부분들을 현재 namespece에 가져올 수 있습니다. 이 때 from ... import * 구문를 사용합니다. 

 

from ... import * 구문은 다음과 같은 구조로 되어 있습니다. 

 

from moduleName import * 

 

위의 예시를 이용하여 다음과 같이 구성해보겠습니다. 

 

from example import *
addf("Zara")

 

위의 실행과 동일한 결과가 나올것입니다. 

 

묘듈과 함꼐 반드시 알아야 할 명령어가 있습니다. 바로 dir() 함수 입니다. 이 함수는 파이썬(Python)의 내장된 함수로 모듈의 포함된 모듈, 변수, 함수에 대해 명시해줍니다. 간단한 예시를 살펴보겠습니다.

 

import math
content = dir(math)
print (content)

 

위의 부분을 실행하면 다음과 같은 결과를 얻을 수 있습니다. 

 

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']

 

모듈 자체 실행 

모듈은 자체적으로 실행도 가능합니다. 메인함수를 두고 실행하는 구조와 유사합니다. 그 방법에 대해서 한번 살펴보도록 하겠습니다. 즉 __main__이라는 부분을 바탕으로 실행할 수 가 있습니다. 반드시 모듈의 끝에 관련된 부분을 넣어 주셔야 합니다. 

 

def addf( par ): 
	print ( par )
	return

if __name__ == "__main__" : 
    addf("Appia")
    print("Module Lecture")

 

이 모듈를 실행했을 때는 다음과 같은 결과가 나옵니다. 

 

Appia
Module Lecture

 

오늘은 모듈에 대해서 간단히 살펴 보았습니다. 모듈을 필수적이지 않습니다. 하지만, 잘 쓰면 쓸수록 좋은 기능이고, 보다 체계적으로 코딩할 수 있는 방안들을 제공합니다. 오늘은 모듈에 대해서 간단히 살펴 보았습니다. 아마 DBC 관련된 작업을 할 예정이고 그 떄 모듈을 통해서 데이터 타입 형태등을 정의 해놓고 사용할 것 같습니다. (현재는 완전 그냥 예상중입니다.) 

 

비록 짧은 포스팅이라서, 많이 부족하지만 혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨 주시길 바랍니다. 

반응형
Comments