[파이썬] 패키지

이은택·2021년 10월 24일
0

개발공부

목록 보기
8/13
post-thumbnail

코드잇 파이썬 중급


패키지란?

  • 여러 모듈들을 묶어 둔 폴더

패키지를 만드는 이유?

  • 프로그램을 잘 정리함으로써 다시 활용하기가 쉬움

패키지 만드는법

  1. 패키지로 사용할 폴더를 만들어준다.
  2. 패키지안에 포함 시킬 모듈파일들을 옮겨준다.
  3. 패키지로 만들 파일 안에 __init__.py 파일을 만들어 준다.

패키지 사용법

  • 패키지안에 있는 모듈을 임포트 하고 싶다면 import 패키지이름.모듈이름 을 쓰면된다.
  • 패키지안 모듈안에 있는 변수와 함수를 활용하고 싶다면 from 패키지이름 import 모듈이름 해야된다.
  • 파이썬에서는 페키지만 임포트하면 패키지안에 있는 내용은 임포트 되지 않는다.
    import 임의패키지
    사용 불가

aliasing을 피하기 위해 list보단 deepcopy를 써야하는 이유

패키지 안에 있는 __init__ 파일이란?

  • 파이썬 3.3 이전 버전까지는 패키지의 인식을 위해 패키지 폴더 안에 __init__.py 파일을 만들어 주었는데 그 이후 버전은 패키지의 인식을 위한 __init__.py 파일을 생성할 필요가 사라졌음 하지만 개발을 하면서 '이 폴더는 패키지입니다' 라고 가독성에 도움을 주기 때문에 없어도 되지만 __init__파일을 만들어 주는 것이 좋다.

패키지 안에 있는 __init__ 파일을 활용

__init__ 파일에 아무것도 작성 하지 않고 패키지만 임포트 할 경우

import <package>

print(<package>.<module>.<method(value)>)

실행 되지 않는다. 패키지만 임포트 하고 해당 코드를 실행시키고 싶다면 __init__.py 파일에

from <package> import module1, module2, ... module_n

을 작성해줘 외부에서 패키지만 임포트하고 사용이 가능하도록 만들 수 있다.

패키지 안에 있는 모듈들의 공통 변수

통합 하는 이유?

같은 변수가 여러번 반복 되는 것은 좋지 않음 같은 값을 잘못 타이핑 할 수 있는데 모듈마다 가지고 있는 공통 변수의 공통 값이 다를 확률이 높아 지기 때문에 통합을 해야된다.

통합하는 법

__init__.py

사용하고자_하는_공통변수 = 공통된값

공통변수 사용하는 법

  • 모듈 사용하는 법과 같음

__all__ 이란?

  • 패키지나 모듈에만 관련된 특수변수 같다.

무엇을 위한 변수인가?

  • 패키지 또는 모듈에서 import * '임포트 스타'를 사용 할 경우 필요한 변수이다.
  • import * 사용시 주의사항
    • 임포트 스타를 사용하면 어떤 패키지 또는 모듈에서 사용하는 함수또는 변수인지 직관적으로 구분하기 어렵기 때문에 해당 네임드스페이스를 정확히 인지하고 있을때 사용하는 것이 혼선으로 인해 잃는 시간을 방지 할 수 있다.

__all__ 설정하는 법

  • 또는 함수들 또는 변수들 들만 적어 제어가 가능하다.
  • 패키지를 임포트 스타할 경우에는 __init__.py 파일안에 특수변수 __all__ 안에 사용하기 원하는 모듈을 작성하고 모듈을 임포트 스타할 경우에는 해당 모듈안에 __all__ 를 작성하고 사용하고자 하는 네임스페이스(함수, 변수)들을 작성해준다.

서브패키지

  • 서브패키지란?
    • 패키지안의 패키지
  • 패키지안에 패키지가 있을때 권장하는 임포트 형식
    • 파이썬에서는 큰 패키지가 여러 패키지가 있으면 필요한 패키지들만 임포트하는 것이 좋다.
  • 패키지의 상대경로
    • 임포트시 상대경로로도 사용가능
    • 두경로 표현방식중 어떤 것이 더 나을까?
      • 절대경로
      • 이유?
        • 상대경로는 . 표현으로 상위 폴더가 무엇인지 모르기 때문에 한번에 파악하는데 시간이 더 걸리기 때문이다.
profile
도전!

0개의 댓글