인공지능/파이썬

파이썬 모듈

mino28 2025. 7. 8. 15:32

파이썬에서는 .ipynb 파일과 .py 파일 모두 파이썬 코드를 작성할 수 있지만, 사용 목적과 형식이 다릅니다.

 

1. 파일 종류 소개

.py Python 파일 일반적인 파이썬 코드 파일 (텍스트 기반)
.ipynb IPython Notebook 파일 Jupyter에서 사용하는 노트북 형식 파일 (JSON 기반)

 

 

프로젝트 개발, 배포용 코드 작성 .py 파일
데이터 분석, 실험 기록, 강의용 .ipynb 파일

 

 

2. 모듈

파이썬에서 모듈을 만들려면 간단히 .py 확장자를 가진 파일에 코드를 작성하면 됩니다. 모듈은 단순한 함수 뿐만 아니라 변수, 클래스 등도 포함할  있으며, 다른 스크립트에서 import 구문을 사용하여 가져올  있습니다.

 

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

 

 

2. 위에서 작성한 math_tools.py를 import 해서 사용합니다.

모듈을 가져오려면 가져오는 스크립트와 모듈이 동일한 디렉터리에 있어야 합니다. 아니면, 모듈을 시스템 경로에 추가하거나, PYTHONPATH 환경 변수를 설정해야 합니다.

모듈의 이름은 파이썬의 키워드와 충돌하면  됩니다. 예를 들어, import.py 라는 모듈을 만들면 import 키워드와 충돌하기 때문에 잘못된 이름입니다.

import math_tools

# 모듈 내의 변수 사용
print(math_tools.PI)  # 3.141592653589793

# 모듈 내의 함수 사용
print(math_tools.add(5, 3))  # 8
print(math_tools.subtract(5, 3))  # 2

# 모듈 내의 클래스 사용
circle = math_tools.Circle(5)
print(circle.area())  # 78.53981633974483

 

from math_tools import PI, Circle

print(PI)  # 3.141592653589793

circle = Circle(5)
print(circle.area())  # 78.53981633974483

 

import math_tools as mt

# 모듈 내의 변수 사용
print(mt.PI)  # 3.141592653589793

# 모듈 내의 함수 사용
print(mt.add(5, 3))  # 8
print(mt.subtract(5, 3))  # 2

# 모듈 내의 클래스 사용
circle = mt.Circle(5)
print(circle.area())  # 78.53981633974483

 

 

3. 구글 드라이브 사용하기

먼저 구글드라이브를 마운트하고 아래와 같이 실행합니다.

path = '/content/drive/MyDrive/Colab Notebooks/' # 각자 환경에 맞게 경로를 저장

import sys
sys.path.append(path)

 

 __name__ 속성 사용하기

모듈에는 __name__이라는 특별한 내장 변수가 있습니다.  변수는 모듈이 어떻게 실행되는지에 따라 다른 값을 가집니다. 모듈이 파이썬 인터프리터에 의해  번째로 실행되면, __name__ '__main__'으로 설정됩니다. 그러나 외부에서 import되면, __name__ 원래의 모듈 이름으로 설정됩니다.

 

1. 아래 코드를 math_tools.py 에 추가합니다.

if __name__ == "__main__":
    print("이 모듈은 직접 실행되었습니다.")
else:
    print("이 모듈은 import 되었습니다.")

 

math_tools.py를 직접 실행하면 "이 모듈은 직접 실행되었습니다."가 출력되고, 다른 파일을 통해 실행하면 "이 모듈은 import 되었습니다."가 출력됩니다. 이 기능을 활용하면 모듈에 테스트 코드를 추가할  있습니다. 모듈이 직접 실행될 때만 테스트 코드가 실행되게 하면, 다른 스크립트에서 모듈을 가져올 때는 테스트 코드가 실행되지 않습니다.

 

 

3. 패키지

파이썬에서 패키지는 모듈들을 포함하고 있는 디렉터리입니다. 모듈은 파이썬 코드를 담고 있는 파일이며, 여러 모듈을 논리적으로 그룹화하려는 경우 패키지를 사용합니다. 패키지를 사용하면 관련된 기능들을 함께 묶어서 코드를 더욱 체계적으로 관리할  있습니다.

my_package/
│
├── __init__.py
│
├── module_a.py
│
└── sub_package/
    │
    ├── __init__.py
    └── module_b.py

 

패키지는 기본적으로 디렉터리와 그 안의 .py 파일들로 구성됩니다. 패키지를 구성하는 디렉터리 내에는 __init__.py라는 특별한 파일이 있어야 합니다. 이 파일은 해당 디렉터리가 파이썬 패키지임을 나타냅니다. __init__.py는 비워둘 수도 있고, 패키지 초기화 코드를 포함할 수도 있습니다. 또한 패키지 안에 다른 패키지(하위 패키지) 포함할  있습니다. 이를 통해 복잡한 프로젝트의 코드를 여러 레벨의 디렉터리로 계층적으로 구성할  있습니다.

from my_package import module_a
from my_package.sub_package import module_b

 

패키지 만들기 실습

shapes/
│
├── __init__.py
├── circle.py
└── rectangle.py

 

1. 아래 코드를 작성하여 __init__.py 로 저장합니다.

기본적으로 패키지의 초기화 코드를 포함할 수 있습니다. 예를 들어, 패키지가 import 될 때 특정 변수를 설정하거나 다른 초기화 작업을 수행하려면 __init__.py 파일에 해당 코드를 작성합니다. 또한, __init__.py 파일을 사용하여 패키지 레벨에서의 import 제어할  있습니다. 예를 들어, from shapes import * 했을  어떤 모듈이 import 될지 정의할  있습니다. 아래 설정은 from shapes import *를 사용할 때 circle와 rectangle 모듈만 가져온다는 것을 의미합니다.

# shapes/__init__.py

__all__ = ["circle", "rectangle"]

 

2. 아래 코드를 작성하여 circle.py 로 저장합니다.

PI = 3.141592653589793

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)

 

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))  # 직사각형의 둘레

 

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))  # 직사각형의 면적

'인공지능 > 파이썬' 카테고리의 다른 글

클로저와 데코레이터  (0) 2025.07.08
파일 입출력 라이브러리  (0) 2025.07.08
타입 어노테이션  (0) 2025.07.08
파일 입출력  (0) 2025.07.08
파이썬의 예외처리  (0) 2025.07.08