쵠몽 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))