파이썬 모듈과 패키지

2021. 8. 24. 13:58·Python/Syntax

모듈과 패키지

모듈

  • 비슷한 성격의 변수, 함수들을 파일로 나눠서 정의하는 것이다.

  • 파일명이 모듈명이다.

  • 예제

    util.py

    INCH = 2.54
    
    def calcsum(n):
        total = 0
        for num in range(n + 1):
            total += num
        return total

    main.py

    import util
    # from util import * # 비권장 (이름 충돌 우려)
    
    print(util.INCH)
    print(util.calcsum(10))
    
    ''' stdout
    2.54
    55
    '''

모듈 테스트

  • __name__ 키워드는 모듈명으로 대체된다.

    • 단독 실행된 경우 : "__main__"

    • 모듈로 사용된 경우 : "모듈명"

    • 이는 모듈 개발 시 테스트하기 편하도록 지원하는 기능이다.

    # 모듈 정의
    
    if __name__ == "__main__" :
      # 모듈 테스트 코드

    util.py

    INCH = 2.54
    
    def calcsum(n):
        total = 0
        for num in range(n + 1):
            total += num
        return total
    
    # print("util.py", __name__) # 모듈명
    
    if __name__ == "__main__":
        print(f"1 inch = {INCH}")
        print(f"~10 = {calcsum(10)}")
    
    ''' stdout
    1 inch = 2.54
    ~10 = 55
    '''

모듈 경로

  • import 할 때 모듈을 찾는 순서는 다음과 같다.

    1. 워킹 디렉토리
    2. PYTHONPATH 환경변수에 등록된 디렉토리
    3. 표준 모듈 디렉토리
    4. 3rd 모듈 디렉토리
    import sys
    
    for path in sys.path:
        print(path)

패키지

  • 모듈들을 모아 놓은 디렉토리이다.

__init__

  • 반드시 __init__.py 파일이 존재해야 한다.

    • 일반적으로 내용은 없다.

    • from 패키지 import * 형식으로 패키지를 호출할 때, __init__.py 의 __all__ 에 해당하는 리스트만 가져온다.

      • __all__ 을 지정하지 않으면 모든 모듈이 불러와진다.

      • 이렇게 패키지를 사용하는 것은 일반적이지 않지만, 관례적으로 패키지의 디렉토리에는 __init__.py 파일을 넣는다고 한다.

써드 파티 모듈

  • 모듈의 내부

    • 빌트인 모듈의 목록을 볼 수 있다.

      import sys
      
      print(sys.builtin_module_names)
      
      ''' stdout
      ('_abc',
      '_ast',
      '_codecs',
      '_collections',
      '_functools',
      '_imp',
      '_io',
      '_locale',
      '_operator',
      '_signal',
      :
      )
      '''
  • dir() 함수

    • 모듈내 함수 목록을 출력한다.

      import math
      
      print(dir(math))
      ''' stdout
      ['__doc__',
      '__file__',
      '__loader__',
      '__name__',
      '__package__',
      '__spec__',
      'acos',
      'acosh',
      'asin',
      :
      ]
      '''
  • help() 함수

    • 함수의 docstring 출력한다.

      help(math.hypot)
      
      ''' stdout
      Help on built-in function hypot in module math:
      
      hypot(x, y, /)
        Return the Euclidean distance, sqrt(x*x + y*y).
      '''
  • 외부 모듈 관리 pip

    명령어 설명
    install 패키지를 설치
    uninstall 설치한 패키지를 삭제한다.
    freeze 설치한 패키지의 목록을 보여준다.
    show 패키지의 정보를 보여준다.
    search pyPI에서 패키지를 검색한다.
  • beautifulsoup 예제

    from urllib import request
    import bs4
    
    target = request.urlopen("http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108")
    soup = bs4.BeautifulSoup(target)
    for city in soup.select("location"):
        name = city.select_one("city").string
        wf = city.select_one("wf").string
        tmn = city.select_one("tmn").string
        tmx = city.select_one("tmx").string
        print("%s : %s(%s ~ %s)"%(name, wf, tmn, tmx))
저작자표시 (새창열림)

'Python > Syntax' 카테고리의 다른 글

파이썬 고급 문법  (0) 2021.08.24
파이썬 파일  (0) 2021.08.24
파이썬 예외 처리  (0) 2021.08.24
파이썬 표준 모듈  (0) 2021.08.24
파이썬 컬렉션 관리  (0) 2021.08.24
'Python/Syntax' 카테고리의 다른 글
  • 파이썬 고급 문법
  • 파이썬 파일
  • 파이썬 예외 처리
  • 파이썬 표준 모듈
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 분류 전체보기 (317)
      • Algorithm (13)
        • 알기 쉬운 알고리즘 (10)
        • Search (1)
        • Sort (2)
      • Arduino (0)
      • C++ (185)
        • Class (46)
        • Exception (6)
        • Library (51)
        • Overloading (10)
        • SmartPointer (5)
        • Syntax (33)
        • TBC++ (23)
        • Templates (9)
        • VisualStudio (2)
      • Embedded (1)
      • Git (4)
      • Java (5)
      • Linux (16)
        • Error (1)
        • Linux Structure (11)
      • MacOS (7)
      • OS (1)
        • Concurrency (1)
      • Python (21)
        • Class (1)
        • Function (2)
        • Syntax (17)
      • Raspberrypi (9)
      • Review (1)
      • Utility (12)
        • VSCode (5)
        • VirtualBox (3)
      • Web (8)
        • Nginx (1)
        • React (3)
        • Django (1)
      • Windows (20)
        • Registry (3)
        • WSL (1)
        • DeviceDriver (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    windows
    logi options
    MacOS
    EXCLUDE
    Workspace
    제외
    백기선
    spring
    KakaoTalk
    java
    Windows 11
    맥북 카카오톡 알림 안뜸
    그림판
    unix
    스프링 프레임워크 핵심 기술
    SunOS 5.1
    윈도우
    citrix workspace
    mspaint
    윈도우 명령어
    dism
    SFC
    vscode
    알림
    시스템 복구
    스프링
    Solaris 10
    로지텍 마우스 제스처
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
파이썬 모듈과 패키지
상단으로

티스토리툴바