✔️ Python 중급
init 파일은 폴더가 파이썬 패키지라고 말해준다.
전에 봤던, name 특수 변수처럼 양쪽에 언더스코어가 있다.
initialize의 줄임말로 초기화를 뜻한다.
그 말은, init은 패키지를 초기화 할 때 사용되는 것 이다.
해석하면 처음으로 패키지나 패키지 안에 어떠한 것을 import하면은 가장 먼저 init파일에 있는 코드가 실행된다.
실행시키면...
shapes 패키지를 불러오면서, init 파일을 실행한 것 이다.
volume 모듈을 불러오면...
결과는...
똑같이 잘 출력이되서 나온다.
패키지를 가져올 때, 안에 있는 모듈들을 같이 가져올려면 init 파일을 활용해서 에러를 방지할 수 있다.
init 파일에서 import되는 모듈들은 패키지 안으로 import된다고 이해하면 된다.
그 말은, shapes 패키지를 import하면은 그 안에 있는 모듈들을 접근할 수 있다.
전에 오류가 났던 파일을 다시 실행시키면...
결과값 :
만약 특정 모듈만 불러온다면...
결과값 :
volume이라는 속성이라는게 없다고 뜬다.
이번에는 area 모듈안에 있는 함수들을 불러오겠다.
결과값 :
shapes 패키지 안에서 circle 함수를 직접 가져왔기 때문에 area를 건너뛰고 shapes.circle, shapes.square라고 쓸 수 있었다.
원의 면적을 구할 때 필요한 PI를 파일 위에 정의해줬다.
하지만 PI는 area 모듈에서만 쓰이는게 아니라 volume 모듈에서도 사용된다.
PI처럼 패키지안에 여러 모듈들이 필요로하는 것들은 각 모듈에서 정의하지 않고 패키지안에서 한 번만 정의해주는게 좋다.
왜냐하면 똑같은 변수를 여러번 정의하는 것은 비효율적이고 실수로 하나를 잘 못 정리하면 프로그램에 오류가 발생할 수 있다.
PI를 한 번만 정의하고 싶으면 shapes 패키지안에 init 파일에 정의하면된다.
패키지 안에 있는 모듈들은 위의 PI를 가져다쓰면 된다.
PI같은 상수뿐만아니라, 여러 모듈에서 필요한 함수 또는 객체도 패키지에 init 파일에서 정의해서 사용이가능하다.
참고로 패키지에 있는 init파일에 정의된 것들은 패키지 밖에서도 사용이 가능하다.
예 )
결과값 :
끝으로 :