ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 90 - (파이썬) 모듈 만들기
    study with Q - 파이썬 2024. 9. 19. 19:36

    #모듈

    : 파일 또는 폴더를 활용해서 구성하게 된다

     

    import 모듈이름

    → 파이썬은 위와 같은 코드를 사용하게 되면 현재 실행하고 있는 파일이 있는 위치에서 "모듈이름"이라는 파일 또는 폴더가 있는지 확인한다. (모듈이름과 같은 이름의 파일을 만들어서 사용하면 오류가 발생한다.) 같은 이름의 파일/폴더가 없ㅇ면 환경 변수에 등록되어 있는 추가적인 위치에서 확인한다.

     

    eg) 

    import sys라는 이름의 모듈이 현재 위치레 있는 곳이 아니다. > 환경 변수라는 곳에 설정되어 있는 위치에 있다.

    → 시스템 모듈에 path라는 변수를 출력해보면 환경 변수에 어떠한 위치가 기록되어 있는지 확인 가능

    더보기
    import sys
    print(sys.path)
    >>>
    ['/home/runner/number2', '/nix/store/v118v4fxlkr24l0cq9mmjdaqivkyzbv8-sitecustomize/lib/python/site-packages', '/nix/store/lq49pw9pmqj715hd6qjwlyap185x3yrl-python3.10-pip-24.0/lib/python3.10/site-packages', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python310.zip', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10/lib-dynload', '/home/runner/number2/.pythonlibs/lib/python3.10/site-packages', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10/site-packages', '/home/runner/number2/.pythonlibs/lib/python3.10/site-packages', '/nix/store/bz7zjmjxakwwryc06g7zlv50nfvig04i-python3.10-setuptools-72.1.0/lib/python3.10/site-packages']

    # 모듈 만들기

    file에 hellolodule.py라는 파일을 만들고 파일 안에

    a = 10
    def b():
      return 300
    class C:
      pass

    라고 변수, 함수, 클래스를 만든 뒤에 main.py에서 불러오면 다음과 같이 나온다.

    import hellolodule
    print(hellolodule.a)
    print(hellolodule.b)
    print(hellolodule.C)
    >>>
    10
    <function b at 0x7f8cbeebf880>
    <class 'hellolodule.C'>

     

    other eg) 

    hellolodule.py에 다음과 같은 클래스를 만들고

    class Circle:
      def __init__(self, 반지름):
        if 반지름 < 0:
          raise ValueError()
        self.__원주율 = 3.14
        self.__반지름 = 반지름
      def 넓이(s):
        return s.__원주율 * s.__반지름**2
      def 둘레(s):
        return 2* s.__원주율 * s.__반지름

     

    main.py에서는 아래와 같이 코드를 작성하면

    from hellolodule import Circle #또는 import hellolodule as h
    c = Circle(100) #또는 c = h.Circle(100)
    print(c.넓이())
    print(c.둘레())
    >>>
    31400.0
    628.0

     

    서클모듈을 조금 더 간단한 형태로 사용 가능하며 실제 활용하는 클래스나 함수, 변수가 분리되기 때문에 코드 실행 부분이 매우 간단해짐을 볼 수 있다.

     

    __name__ 이라는 변수

    : 현재 파일이 자신이 메인으로 실행되는지 모듈로 실행되는지 구분할 때 사용하는 변수

     

    # if __name__ == "__main__"

    : 모듈 코드 내부에서 확인할 때 사용

     

    eg) 위에서 모듈인 hellolodule.py에 아래와 같은 코드를 만들고 실행해도 검증 관련 내용은 실행되지 않음

    if __name__ == "__main__":
      print("넓이()를 검증")
      if Circle(10).넓이 == 314 - 10**-7 :
        print("넓이() 검증 성공: Success")
      else:
        print("넓이() 검증 실패: Fail")
      print("둘래()를 검증")
      if Circle(10).둘레 == 62.8 - 10**-7 :
        print("길이() 검증 성공: Success")
      else:
        print("길이() 검증 실패: Fail")

     

    ※ 가독성과 유지보수성을 위한 수정을 할 때 테스트가 유용하게 활용된다.

    'study with Q - 파이썬' 카테고리의 다른 글

    91 - (파이썬) 패키지  (0) 2024.09.22
    89 - (파이썬) 모듈 문제  (0) 2024.09.19
    88 - (파이썬) 기본 내장 모듈  (1) 2024.09.13
    87 - (파이썬) 모듈을 읽는 방법  (0) 2024.09.13
    85 - (파이썬) 스택과 큐  (2) 2024.09.09
Designed by Tistory.