파이썬/파이썬 기초 문법
파이썬 모듈
쵠몽
2024. 10. 20. 17:23
1. 모듈
- 모듈은 파이썬 코드를 담고 있는 파일이고 .py 확장자를 가진 파일에 코드를 작성하여 파이썬 모듈을 만들면 코드로 작성한 함수, 변수, 클래스 등을 모듈에서 가져와 사용할 수 있다. 가져오는 방법은 import 구문을 이용하는 것이다.
- 모듈을 가져오려면 사용하는 스크립트와 모듈이 동일한 디렉토리에 존재해야 한다. 아니면 모듈을 시스템 경로에 추가하거나 PYHONPATH 환경 변수를 설정해야 한다.
- 모듈의 이름이 파이썬의 키워드와 충돌하면 안 된다. 예를 들어 import.py 라는 모듈을 만들면 import 키워드와 충돌하기 때문에 모듈 이름을 다르게 설정해야 한다.
이번에 연습할 .py 모듈은 파이참 무료판을 가지고 만들어 보았다.
순수 Python 개발용 IDE 무료판 다운로드
PyCharm: 데이터 과학 및 웹 개발을 위한 Python IDE
www.jetbrains.com
1-1. 아래 코드를 작성하여 math_tools.py 로 사용할 모듈 저장하기
PI = 3.141592653589793
def add(a, b):
return a + b
def subtract(a, b):
return a - b
class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return PI * self.radius * self.radius
1-2. 위에서 작성한 math_tools.py를 import 하여 사용하기
import math_tools
# 모듈 내의 변수 사용
print(math_tools.PI)
# 모듈 내의 함수 사용
print(math_tools.add(10, 3))
print(math_tools.subtract(10, 3))
# 모듈 내의 클래스 사용
circle = math_tools.Circle(5)
print(circle.area())
# 필요한 속성, 클래스만 가져오기
from math_tools import PI, Circle
print(PI)
circle = Circle(5)
print(circle.area())
# 모듈을 별명을 이용해서 사용하기
import math_tools as mt
print(mt.PI)
print(mt.add(5, 3))
print(mt.subtract(5, 3))
circle = mt.Circle(5)
print(circle.area())
2. 구글 드라이브를 활용한 모듈 사용
path = '/content/drive/MyDrive/module'
import sys
sys.path.append(path)
import math_tools as mt
print(mt.PI)
print(mt.add(5, 3))
print(mt.subtract(5, 3))
circle = mt.Circle(5)
print(circle.area())
3. 패키지
파이썬에서 패키지란 모듈들을 포함하고 있는 디렉토리다. 모듈은 파이썬 코드를 담고 있는 여러 모듈을 논리적을 그룹화하려는 경우 패키지를 사용한다. 패키지를 사용하면 관련된 기능들을 묶어서 코드를 더욱 체계적으로 관리할 수 있다.
my_package/
│
├── __init__.py
│
├── module_a.py
│
└── sub_package/
│
├── __init__.py
└── module_b.py
3-1. __init__.py의 역할
기본적으로 패키지의 초기화 코드를 포함할 수 있다. 예를 들어 패키지가 import될 때 변수를 설정하거나 다른 초기화 작업을 수행하고 싶을 때 __init__.py 파일에 해당 코드를 작성하면 된다.
또한 __init__.py 파일을 사용하여 패키지 레벨에서의 import를 제어할 수 있다. 예를 들어 from shapes import* 를 했을 때 어던 모듈이 import 될지 정의할 수 있다.
3-2. 패키지 만들기
(1) 디렉토리 구조 설정
shapes/
│
├── __init__.py
├── circle.py
└── rectangle.py
(2) circle.py 만들기
PI = 3.14159265
def area(radius):
return PI * radius * radius
def circumference(radius):
return 2 * PI * radius
(3) rectangle.py 만들기
def area(width, height):
return width * height
def perimeter(width, height):
return 2 * (width + height)
(4) 패키지 사용
from shapes import * # circle, rectangle 불러오기
# circle 모듈 사용
print(circle.area(5))
print(circle.circumference(5))
# rectangle 모듈 사용
print(rectangle.area(4, 6))
print(rectangle.perimeter(4, 6))
# circle과 rectangle 모듈의 함수명이 동일하여 충돌이 발생할 땐 별명 사용하기
from shapes.circle import area as circle_area
from shapes.rectangle import area as rectangle_area
print(circle_area(5))
print(rectangle_area(4, 6))