Python

파이썬에서 모듈(module) 사용하기

총알 2024. 6. 29. 15:20
728x90

파이썬에는 클래스, 함수, 변수 등을 모아놓은 모듈이라는 게 있다.

C언어와 비교한다면 다른 c파일에서 선언된 함수, 변수 등을 사용하는 개념이라고 보면 될 것 같다.

모듈은 라이브러리 형태로 제공되기도 하고 클래스, 함수 등이 오픈되어 제공되기도 한다.

 

모듈을 사용하는 방법은 아래 예제를 참고하면 된다.

 

먼저 main.py와 calculator.py가 아래와 같이 같은 디렉토리에 구성한다.

 

그리고 calculator.py에서 클래스와 메서드를 선언한다.

아래와 같이 calculator.py 파일은 모듈로 사용된다.

"""
=================================================
File: calculator.py
Author: Seo
Date: 29-06-2024
=================================================
"""

class Calculator_2method:
    result = 0
    def __init__(self):
        pass

    def add(self, var1):
        Calculator_2method.result += var1

    def min(self, var1):
        Calculator_2method.result -= var1

cal1 = Calculator_2method()
cal2 = Calculator_2method()

 

 

다음으로 main.py에서 calculator 모듈을 import한다.

import를 하는 방법은 3가지 방법이 있는데 그 방법은 아래와 같다.

from 모듈이름 import 객체 or 클래스 or 변수
"""
=================================================
File: main.py
Author: Seo
Date: 29-06-2024
=================================================
"""

from calculator import cal1, cal2

cal1.add(5)
print("add result: %d" %cal1.result)

cal2.min(2)
print("min result: %d" %cal2.result)

위 방법은 모듈에서 필요한 객체, 클래스, 변수만 불러올 수 있다.

이렇게 import 할 경우 해당 객체를 사용할 경우 앞에 모듈. 을 붙이지 않아도 된다.

 

from 모듈이름 import *
"""
=================================================
File: main.py
Author: Seo
Date: 29-06-2024
=================================================
"""

from calculator import *

cal1.add(5)
print("add result: %d" %cal1.result)

cal2.min(2)
print("min result: %d" %cal2.result)

위 방법은 모듈에서 모든 객체, 클래스, 변수를 불러올 수 있다.

이렇게 import할 경우 해당 객체를 사용할 경우 앞에 모듈.을 붙이지 않아도 된다.

 

import 모듈이름
"""
=================================================
File: main.py
Author: Seo
Date: 29-06-2024
=================================================
"""

import calculator

calculator.cal1.add(5)
print("add result: %d" %calculator.cal1.result)

calculator.cal2.min(2)
print("min result: %d" %calculator.cal2.result)

위 방법은 모듈에서 사용되는 전체 객체, 클래스, 변수를 불러올 수 있다.

위와 같이 import할 경우 객체를 사용할 때 모듈.을 붙여야 한다.

 

출력 결과
add result: 5
min result: 3

 

다음으로 다른 모듈에서 호출되었을 경우 수행되지 않도록 막을 수 있는 방법에 대해서 알아보자.
main.py
"""
=================================================
File: main.py
Author: Seo
Date: 29-06-2024
=================================================
"""

from calculator import *

cal1.add(5)
print("main.py add result: %d" %cal1.result)

cal2.min(2)
print("main.py min result: %d" %cal2.result)

 

calculator.py
"""
=================================================
File: calculator.py
Author: Seo
Date: 29-06-2024
=================================================
"""

class Calculator_2method:
    result = 0
    def __init__(self):
        pass

    def add(self, var1):
        Calculator_2method.result += var1

    def min(self, var1):
        Calculator_2method.result -= var1

cal1 = Calculator_2method()
cal2 = Calculator_2method()

cal1.add(3)
print("calculator.py add result: %d" %cal1.result)

 

main.py와 calculator.py가 위와 같이 작성되었다고 해보자.

이때 main.py를 실행하게 되면 아래와 같은 출력 결과가 나온다.

calculator.py add result: 3
main.py add result: 8
main.py min result: 6

 

main.py를 수행하였는데 calculator에서 call 된 함수나 메서드들도 호출이 되고 있다.

이를 막기 위해서는 if __name__ == "__main__"를 사용해서 해당 부분이 수행되지 않도록 막을 수 있다.

 

main.py
"""
=================================================
File: main.py
Author: Seo
Date: 29-06-2024
=================================================
"""

from calculator import *

if __name__ == "__main__":
    cal1.add(5)
    print("main.py add result: %d" %cal1.result)

    cal2.min(2)
    print("main.py min result: %d" %cal2.result)

 

calculator.py
"""
=================================================
File: calculator.py
Author: Seo
Date: 29-06-2024
=================================================
"""

class Calculator_2method:
    result = 0
    def __init__(self):
        pass

    def add(self, var1):
        Calculator_2method.result += var1

    def min(self, var1):
        Calculator_2method.result -= var1

cal1 = Calculator_2method()
cal2 = Calculator_2method()

if __name__ == "__main__":
    cal1.add(3)
    print("calculator.py add result: %d" %cal1.result)

 

위와 같이 if __name__ == "__main__"를 사용하면 main.py를 실행하였을 때 아래와 같은 출력결과를 얻을 수 있다.

main.py add result: 5
main.py min result: 3

 

if __name__ == "__main__"의 경우 직접적으로 호출되는 것이 아니라 모듈 형태로 간접적으로 호출될 경우

if __name__ == "__main__"이하 부분에 대해서는 수행되지 않는다.

 

여기까지 모듈 사용법에 대해서 알아보았다.

728x90