[Python] 16. 여러 파일로 분리하여 함수를 구성하고 사용하는 방법

파이썬에서 여러 파일로 분류하여 함수를 구성하고 호출하는 방법은 코드를 모듈화하고 유지보수를 용이하게 하는데 도움이 됩니다.
효율적인 구조를 위해서는 몇 가지 일반적인 권장 사항을 따르는 것이 좋습니다.

효율적인 파일 구조를 위한 권장 사항

모듈화

파이썬에서 모듈(Module)은 파이썬 파일(.py)로서 특정 기능을 담고 있는 코드의 묶음입니다.
관련된 함수, 변수, 클래스 등을 하나의 파일로 구성하여 코드를 재사용하고 가독성을 높이는 데 도움이 됩니다.
모듈은 다른 파이썬 파일에서 import 문을 사용하여 임포트할 수 있습니다.

예를 들어, math_utils.py 파일에 수학 관련 함수를 작성하고, string_utils.py 파일에 문자열 처리 관련 함수를 작성하는 것이 모듈화에 해당합니다.

함수 분리

한 파일에 여러 기능을 담지 않고, 관련 기능을 하나의 함수로 분리하여 작성합니다.
이렇게 하면 각 함수의 역할과 책임이 명확해지고, 코드의 가독성이 향상됩니다.
또한 함수의 재사용성이 높아집니다.

예를 들어, math_utils.py 파일에서 add() 함수와 subtract() 함수를 따로 분리하여 작성하는 것이 함수 분리에 해당합니다.

패키지 구성

여러 모듈을 기능에 따라 폴더로 그룹화하여 패키지(Package)를 구성합니다. 패키지는 __init__.py 파일을 포함하는 폴더입니다.
이렇게 하면 관련된 모듈들을 하나의 패키지로 묶어서 관리할 수 있으며, 코드의 구조화와 가독성이 높아집니다.

예를 들어, math_utils.pystring_utils.pyutils 폴더로 그룹화하여 패키지를 구성하는 것이 패키지 구성에 해당합니다.

init.py

패키지 폴더 내에 __init__.py 파일을 생성하여 패키지로 인식되도록 합니다.
이 파일은 비어 있어도 됩니다.
하지만 패키지로 인식하려면 반드시 필요합니다.

예를 들어, utils 폴더 내에 비어있는 __init__.py 파일을 생성하여 패키지를 구성하는 것이 init.py 파일에 해당합니다.

효율적인 모듈 임포트

모듈을 임포트할 때는 필요한 함수만 가져오도록 from ... import ... 문법을 사용하거나, 모듈 이름을 축약하여 임포트합니다.
이렇게 하면 코드가 깔끔해지고, 중복된 이름 충돌을 방지할 수 있습니다.

예를 들어, main.py에서 math_utils.pyadd()subtract() 함수만 가져오려면 from utils.math_utils import add, subtract와 같이 사용하는 것이 효율적인 모듈 임포트에 해당합니다.

여러 파일로 분류하고 함수를 구성하는 예제

기본적인 파일 분리와 함수 호출

math_utils.py

# math_utils.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

main.py

# main.py
from math_utils import add, subtract

print(add(5, 3))  # 8
print(subtract(5, 3))  # 2

위 예제에서 math_utils.py 파일에는 add() 함수와 subtract() 함수를 정의합니다.
이 파일은 각각 덧셈과 뺄셈 연산을 수행하는 기능을 제공하는 모듈로 사용됩니다.
이후 main.py 파일에서는 math_utils 모듈을 import하여 add()subtract() 함수를 호출하여 사용합니다.

함수를 다른 파일에서 호출하기

string_utils.py

# string_utils.py
def capitalize(text):
    return text.capitalize()

main.py

# main.py
import string_utils

text = "hello, python!"
print(string_utils.capitalize(text))  # "Hello, Python!"

위 예제에서 string_utils.py 파일에는 capitalize() 함수를 정의합니다.
이 파일은 문자열의 첫 글자를 대문자로 변환하는 기능을 제공하는 모듈로 사용됩니다.
main.py 파일에서는 string_utils 모듈을 import하여 capitalize() 함수를 호출하여 사용합니다.

파일 패키지 구성하기

math_utils.py

# math_utils.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

string_utils.py

# string_utils.py
def capitalize(text):
    return text.capitalize()

utils 폴더 구성

my_project/
    main.py
    utils/
        __init__.py
        math_utils.py
        string_utils.py

main.py

# main.py
from utils.math_utils import add, subtract
from utils.string_utils import capitalize

print(add(5, 3))  # 8
print(subtract(5, 3))  # 2

text = "hello, python!"
print(capitalize(text))  # "Hello, Python!"

위 예제에서는 math_utils.py 파일과 string_utils.py 파일을 utils 폴더 내에 모듈로 구성하였습니다.
이렇게 함으로써 관련 기능들을 하나의 폴더에 모아두고 관리할 수 있습니다.
main.py 파일에서는 utils 폴더 내의 모듈들을 import하여 각각의 함수를 사용합니다.

효율적인 모듈 임포트

math_utils.py

# math_utils.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

main.py

# main.py
from math_utils import *

print(add(5, 3))  # 8
print(subtract(5, 3))  # 2

위 예제에서는 math_utils.py 파일에 있는 모든 함수들을 from math_utils import * 문법을 사용하여 한 번에 임포트하였습니다.
이렇게 함으로써 모듈의 모든 함수를 간편하게 사용할 수 있습니다.
하지만 이 방법은 모듈이 크거나, 여러 모듈을 함께 사용할 때 이름 충돌 문제를 야기할 수 있으므로 주의해야 합니다.

이렇게 파이썬에서 여러 파일로 분리하여 함수를 구성하고 사용하는 방법을 예제와 함께 설명드렸습니다.
파일과 함수를 모듈화하여 관리하는 것은 코드의 가독성과 재사용성을 높이는 데 도움이 되며, 큰 규모의 프로젝트에서 효율적인 개발을 지원합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤