Python

1-8-3. 모듈생성

모듈생성 방법

module1이라는 모듈생성
디렉터리(폴더)를 만들고
main.py와 test_module.py를 만들어서 저장합니다.

# test_moudle.py
PI = 3.14

def number_input():
    """
    radius를 입력받을 함수입니다.
    """
    output = input("숫자를 입력해주세요")
    return float(output)

def get_circumference(radius):
    return 2 * PI * radius

def get_circle_area(radius):
    return PI * radius * radius
import test_moudle as test

radius = test.number_input()
print(test.get_circumference(radius))
print(test.get_circle_area(radius))

__name__ == “__main__”

위 코드의 의미

__name__

프로그래밍 언어에서는 프로그램의 진입점
entry point(엔트리 포인트) 혹은 main(메인) 이라고 부릅니다.
그리고 엔트리 포인트 혹은 메인 내부에서의
__name__은 “”__main__”입니다.

모듈의 __name__

모듈 생성에서
엔트리 포인트가 아니지만
엔트리 포인트 파일 내에서 import 되었기 때문에
모듈 내 코드가 실행되게 됩니다.
모듈 내부에서 __name__을 출력하면 모듈의 이름을 나타내게 됩니다.

# main.py 파일
print("메인의 __name__ 확인")
print(__name__)
print()

__name__을 활용하기

현재 파일이 어떤 모듈로 실행되는지, 엔트리 포인트로 실행되는지 확인이 가능합니다.

# test_moudle
PI = 3.14

def number_input():
    """
    radius를 입력받을 함수입니다.
    """
    output = input("숫자를 입력해주세요")
    return float(output)

def get_circumference(radius):
    return 2 * PI * radius

def get_circle_area(radius):
    return PI * radius * radius

if __name__ == "__main__":
    print("get_circumference(10):", get_circumference(10))
    print("get_circle_area(10)", get_circle_area(10))

현재 파일이 엔트리 포인트인지 확인하고,
엔트리 포인트 일 때만 실행합니다.
자주 사용되는 코드입니다.


패키지

pip는 패키지 관리 시스템(Package Management System)이며
모듈이 모여서 구조를 이루면 패키지(Package)라고 부릅니다.

패키지 만들기

main.py는 엔트리 포인트로 사용할 파이썬 파일이고
test_package 폴더는 패키지로 사용할 폴더로
test_package 내부에는 module_a.py, module_b.py 파일을 생성합니다.

module_a.py

variable_a = "a 모듈의 변수"

module_b.py

variable_b = "b 모듈의 변수"

main.py

import test_package.module_a as a
import test_package.module_b as b

# 모듈 내부 변수 출력하기
print(a.variable_a)
print(b.variable_b)

__init__.py 파일

패키지를 읽을 때 어떤 처리를 수행해야 하거나
패키지 내부의 모듈들을 한꺼번에 가져오고 싶을 때
패키지를 읽어 들일 때 __init__.py를 가장 먼저 실행시켜서
__init__.py 내부에 __all__이라는 리스트를 생성하여
from <패키지 이름> import *에서 전부 읽어들여집니다.

__init__.py

# 모듈을 읽어 들일 때 가져올 모듈
__all__ = ["moudule_a","moudule_b"]

# 패키지를 읽어들였을 때 처리를 작성 가능합니다.
print("test_package를 읽어들였습니다.")

main.py

# 패키지 내부 모듈을 모두 읽어들입니다.
from test_package import *

# 모듈 내부 변수 출력
print(module_a.variable_a)
print(module_b.variable_b)
모듈생성

모듈생성 후 사용하는 방법

module_a

from test_package import module_a

module_b

from test_package import module_b

답글 남기기

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