..

Search

23) 모듈

모듈


모듈(module)

프로그램을 개발하다보면 프로그램의 크기가 커짐에 따라 개발이나 유지보수를 위해 소스 파일을 여러 개로 나눠야 할 수도 있습니다.

또한, 한 번 정의해서 사용한 편리한 함수를 다른 프로그램에서 또다시 정의하지 않고 곧바로 사용하고 싶어질 수도 있습니다.

 

이를 위해 파이썬에서는 한 번 정의했던 변수나 함수, 클래스 등을 다른 파이썬 프로그램에서도 손쉽게 불러와 사용할 수 있도록 하나의 파일로 모아놓는 방법을 제공하며, 이것을 모듈(module)이라고 부릅니다.

 

모듈은 파이썬 프로그램에서 사용할 수 있는 여러 정의들과 실행 가능한 구문들을 담고 있는 하나의 파이썬 파일(.py)로써, 파이썬에서 기본적으로 제공하는 모듈뿐만 아니라 다른 사람이 만든 모듈을 사용하거나 자신이 직접 새로운 모듈을 작성하여 사용할 수도 있습니다.


모듈 불러오기

파이썬에서는 import 문을 사용하여 다음과 같이 세 가지 방식으로 모듈을 불러올 수 있습니다.

문법

1. import 모듈명
2. from 모듈명 import *
3. from 모듈명 import 함수명 또는 클래스명

 

이러한 import 문은 코드의 어느 위치에서라도 사용할 수 있지만, 통상적으로 코드의 맨 앞에 위치하는 것이 가장 좋습니다.

 

첫 번째와 두 번째 방법은 모두 해당 모듈 전체를 불러옵니다.

첫 번째 방법은 모듈에 포함된 변수나 함수를 사용할 때마다 매번 모듈명과 함께 닷(.) 연산자를 사용해야 하지만, 두 번째 방법은 변수명이나 함수명만으로도 간편하게 사용할 수 있습니다.

예제

import math  

 

print(math.pi)

print(math.pow(2, 2))  

 

from math import *  

 

print(pi)

print(pow(2, 2))

코딩연습 ▶

실행 결과

3.141592653589793
4.0
3.141592653589793
4.0

 

위의 예제에서는 파이썬에서 기본적으로 제공하는 수학 관련 모듈인 math 모듈을 임포트해서 사용하고 있습니다.

이때 프로그램 내에서 math 모듈을 사용하려면 언제나 모듈명인 math와 닷(.) 연산자까지 함께 사용해야만 합니다.

만약 모듈명을 함께 사용하지 않으면, 파이썬은 해당 변수나 함수가 정의되어 있지 않다고 판단하여 NameError를 발생시킬 것입니다.

 

하지만 다음 예제처럼 두 번째 방법을 사용하여 모듈을 임포트하면 모듈명을 사용하지 않고 변수명이나 함수명만으로 간단하게 사용할 수 있습니다.

예제

e = "내가 정의한 변수 e"

print(e)  

 

from math import *

print(e)

코딩연습 ▶

실행 결과

내가 정의한 변수 e
2.718281828459045

 

마지막으로 세 번째 방법은 모듈 전체가 아닌 해당 모듈 내에서 특정 변수나 함수, 클래스만을 불러오고자 할 때 사용합니다.

 

얼핏 생각하기에 두 번째 방법을 사용하면 굳이 세 번째 방법은 사용할 필요가 없다고 느껴질 수도 있습니다.

하지만 두 번째 방법은 프로그램에서 정의한 변수명과 불러온 모듈에 포함된 변수명이 겹치는 경우에 다음과 같이 의도치 않은 결과를 가져올 수 있습니다.

예제

e = "내가 정의한 변수 e"

print(e)  

 

from math import *

print(e)

print(pi)

코딩연습 ▶

실행 결과

내가 정의한 변수 e
2.718281828459045
3.141592653589793

 

위의 예제는 수학에서 자주 사용하는 원주율(pi, 3.141592...) 값을 사용하기 위해 math 모듈을 전부 불러온 예제입니다.

그리고 1번 라인에서는 문자열 변수 e를 선언하고 있습니다.

 

하지만 math 모듈을 임포트한 다음인 5번 라인부터는 1번 라인에서 정의한 변수 e에는 접근할 수 없게 됩니다.

그 이유는 불러온 math 모듈에 이미 수학에서 자주 사용되는 오일러의 수(e, 2.71828...)가 같은 이름의 변수 e로 포함되어 있기 때문입니다.

 

그 결과 5번 라인에서 변수 e의 값을 출력하면, 직접 선언한 문자열이 아닌 오일러의 수가 출력됨을 확인할 수 있습니다.

이처럼 두 번째 방법은 불러온 모듈을 매우 손쉽게 사용할 수 있도록 해주지만, 사용자가 직접 정의한 변수나 함수와 이름이 겹칠 가능성이 언제나 존재합니다.

 

따라서 이와 같은 상황을 피하기 위해 import 문을 언제나 코드의 맨 앞에 위치시키거나, 다음 예제와 같이 필요한 변수나 함수만을 불러와 사용하는 것이 좋습니다.

예제

e = "내가 정의한 변수 e"

print(e)  

 

from math import pi

print(e)

print(pi)

코딩연습 ▶

실행 결과

내가 정의한 변수 e
내가 정의한 변수 e
3.141592653589793

 

이처럼 모듈을 불러와 사용할 때에는 상황에 맞는 적절한 방법을 선택할 필요가 있습니다.


연습문제