모듈
✒️ 2025-05-19 10:24 내용 수정
Do it! 점프 투 파이썬(2017년 발행) 내용을 정리
함수나 변수 또는 클래스를 모은 Python 파일
- 다른 Python 프로그램에서 불러와 사용할 수 있도록 만든 파일이다.
모듈 생성 및 import로 불러오기
- 일반적인 Python 파일과 동일한 방법으로 만든다.
# calc.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
import문을 사용하여 현재 디렉터리에 있는 파일이나 Python 라이브러리가 저장된 디렉터리에 있는 모듈을 불러올 수 있다.- 모듈 이름 작성 시 확장자
.py는 제외한 이름을 작성한다.
- 모듈 이름 작성 시 확장자
import 모듈이름
- 사용할 함수는
모듈이름.함수이름()으로 사용한다.
# 모듈.py
import calc
print(calc.add(10, 5))
print(calc.sub(7, 3))
- 모듈의 특정 함수만 가져올 땐
from 모듈이름 import 함수이름을 사용한다.
from 모듈이름 import 함수이름
- 이 방법으로 가져온 함수는
함수이름()으로 사용할 수 있다. calc모듈에서add()만 가져오고sub()를 가져오지 않아 에러가 뜨는 것을 확인할 수 있다.
# 모듈.py
from calc import add
print(add(10, 5))
print(sub(10, 5))
- 모듈의 함수를 사용할 때
모듈.함수이름()이 아닌함수이름()으로 사용하려면*문자를 사용한다.- 해당 모듈의 모든 함수를 불러오는 의미이다.
# 모듈.py
from calc import *
print(add(10, 5))
print(sub(10, 5))
__name__ 변수
-
Python 내부적으로 사용하는 변수로, 파일의 호출에 따라 다른 값이 저장된다.
- 직접 모듈 파일을 실행할 경우
__name__에는__main__값이 저장된다. - Python 셸이나 다른 Python 모듈에서
import할 경우__name__에는import한 모듈의 이름이 저장된다.
- 직접 모듈 파일을 실행할 경우
-
위에서 사용한 예시에서
calc.py에print()를 추가하고, 터미널에서 파일을 실행하면 print 구문이 동작한다.
- 이런 상태로 모듈 파일에서
calc.py의 함수를 사용하기 위해import하면calc.py파일이 실행되어 나온 결과값과모듈.py에서calc.add()등을 사용한 결과가 같이 출력된다.
- 이 문제를 해결하기 위해
calc.py에__name__를 확인하는 구문을 추가한다.
# calc.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
# 변수 확인 추가
if __name__ == "__main__":
print(add(1, 2))
print(sub(5, 8))
- 추가 후 다시
모듈.py를 실행하면calc.py에 작성했던print결과가 출력되지 않는다.
클래스나 변수가 포함된 모듈
- 클래스와 변수가 포함된 경우에도 동일한 방법으로 모듈을
import하여 사용할 수 있다.
# circle.py
PI = 3.141592
class Math:
def area(self, r):
return PI * (r ** 2)
def circum(self, r):
return 2 * PI * r
def info():
print("원주와 원의 면적 계산")
>>> import circle
>>> circle.info()
원주와 원의 면적 계산
>>> a = circle.Math()
>>> print(a.area(3))
28.274328
>>> print(a.circum(3))
18.849552000000003
>>> circle.PI
3.141592
- 마찬가지로
모듈명.함수(),모듈명.클래스,모듈명.변수대신함수(),클래스,변수형태로 사용하고 싶다면from 모듈명 import *로 작성한다.
>>> from circle import *
>>> info()
원주와 원의 면적 계산
>>> a = Math()
>>> print(a.area(5))
78.5398
>>> print(a.circum(5))
31.41592
>>> PI
3.141592
다른 디렉터리의 모듈 불러오기
import는 같은 디렉터리나 Python 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있었다.- 다른 디렉터리의 파일을 불러오는 방법은 2가지로,
sys.path.append를 사용하거나PYTHONPATH환경 변수를 사용한다.
sys.path.append()사용sys모듈은 Python 설치 시 함께 설치되는 라이브러리 모듈로, Python 라이브러리가 설치된 디렉터리를 확인할 수 있다.sys.path는 Python 라이브러리가 설치되어 있는 디렉터리 목록을 리스트(리스트 자료형)로 보여준다.
>>> import sys
>>> sys.path
sys.path.append()를 사용하여 모듈이 있는 디렉터리를 추가한다.
>>> import sys
>>> sys.path
>>> sys.path.append("C:\\modulPath")
- 추가 후 해당 디렉터리에 있는 모듈을
import해서 함수와 클래스를 사용할 수 있는지 확인한다.
>>> import circle
>>> a = circle.Math()
>>> print(a.area(6))
113.097312
- Python 인터프리터를 닫으면 경로를 추가했던 것이 사라지기 때문에 다시 설정해야 한다.
PYTHONPATH환경 변수 사용- 터미널에서
set명령어를 사용하여PYTHONPATH환경 변수에 모듈이 있는 디렉터리를 설정한다. - 이 경우도 터미널이나 인터프리터를 종료하면 설정된 환경 변수가 제거된다.
- 터미널에서
C:\Users\user>set PYTHONPATH=C:\Users\user\Desktop\PythonPractice
C:\Users\user>python
>>> from circle import *
>>> a = Math()
>>> print(a.area(4))
50.265472
>>> PI
3.141592