211211 TIL

CoderS·2021년 12월 11일
0

TIL DAY 128

오늘 배운 일

✔️ Python 중급

1. all 특수 변수

모듈을 import할 때, from '패키지' import *를 사용해서 모듈들을 가져와본다.

run.py

결과값 :

  • dir 함수는 현재 파일에서 정의된 모든 이름들을 리턴해준다.
    그 말은, 우리가 shapes 패키지에서 가져올 volume과 area 모듈도 나와야하는데, 추가가되지 않았다.

import *를 패키지에 적용하면 그 안에 있는 아무 모듈도 import되지 않는다.

이 것을 해결할려면, init 파일에 코드를 추가해주면된다.

init.py

all 이라는 특수변수는 import *를 했을 때, 어떤것들을 가져와야 하는지 정해주는 변수이다.

그 말은, import 전체를 가져오라고 할 때, 전체가 무엇인지 정의해준다.

가져와야 할 것들을 리스트 문자열로 지정한다.

다시 run 파일을 실행시키면...

run.py

결과값 :

  • area와 volume이 잘 추가되서 출력되었다.

그리고 특수변수 all 안에는 패키지의 모든 모듈들을 안넣어도 된다.

예 )

init.py

run.py

결과값 :

  • area 모듈만 추가되서 나왔다.

그리고 추가적으로 all은 모듈에서도 사용이 가능하다.

area.py

이건 area 모듈에 import *를 했을 때, PI와 circle만 가져오겠다는 뜻이다.

run.py

결과값 :

  • square 함수는 import되지 않았다.

2. 서브패키지

지금까지 우리는 패키지안에 모듈들만 있는 것을 보았다.

출처 : 코드잇

그리고 패키지안에는 모듈들만 있는게 아니라 패키지도 존재할 수 있다.

출처 : 코드잇

위의 이미지를 참고하면, 패키지안에 또 다른 패키지가 있을 때, 안에 있는 패키지를 서브패키지 (Subpackage)라고 한다.

출처 : 코드잇

우리는 mymath라는 패키지를 만들어서 기존에 있던 shapes 패키지를 넣어주고 새로운 서브패키지인 stats 패키지와 모듈들을 만들어준다.

여기서 stats 패키지는 간단한 통계 패키지이다. 안에는 average와 spread 모듈이 존재한다.

average.py

mean과 median을 구해주는 함수들이 존재한다.

spread.py

데이터 범위를 구해주는 data_range 함수가 존재한다.

그러면 우리는 mymath라는 패키지를 만들고 그 안에 shapes와 stats 패키지들을 넣어준다.

프로젝트 폴더로 가서 new -> Python Package를 선택해준다.

Python Package를 생성하면 일반 디렉토리랑 약간 다른게 init 파일을 생성해준다.

그리고 mymath라는 패키지를 생성하고 shapes와 stats를 넣는다.

다음에는 서브패키지를 사용하는 방법에 대해 배울 것 이다.

끝으로 :

  • 오늘은 특수변수 all과 패키지안에 패키지인 서브패키지에 대해 배우는 시간을 가졌습니다.
  • all 변수를 사용해서 우리가 원하는 함수들을 가져올 수 있어서 편리한 것 같다.
profile
하루를 의미있게 살자!

0개의 댓글