HeYStRanGeR
article thumbnail
Published 2021. 1. 15. 03:58
[Python] 파이썬 - 패키지 Coding/Python

(2021.01.15)

 

더보기

모듈에 이어서 패키지 공부 시작... 여태 파이썬 공부한 것 중 제일 까다로운 것 같음...

원래 어제 다 끝내려고 했는데 치과갔다오고 밥먹고 트레이더스, 코스트코 갔다와서 공부를 못했다..

하지만 난 올빼미형인간이니까 지금부터 공부시작~~~ 오늘은 5장 끝내고 자바도 해야지

 

book.naver.com/bookdb/book_detail.nhn?bid=15052904

 

Do it! 점프 투 파이썬

파이썬 4년 연속 베스트셀러 1위!《DO IT! 점프 투 파이썬》 전면 개정판 출시!문과생도 중고등학생도 직장인도 프로그래밍에 눈뜨게 만든 바로 그 책이 전면 개정판으로 새로 태어났다! 2016년 《D

book.naver.com

참고도서: 점프투파이썬


패키지

패키지는 파이썬 모듈을 계층적으로 관리하게 해주고, 디렉터리와 파이썬 모듈로 이루어진다.

 

 

 

 

점프투파이썬 책의 실습을 바탕으로 공부를 했다.

 

 

1. game 이라는 루트 디렉터리 안에 sound, graphic 이라는 서브 디렉터리를 넣어준다.

 

 

2. 디렉터리 밑에 .py 파일들을 생성해준다.

C:\Users\USER\Desktop\Pythonstudy\game\__init__.py
C:\Users\USER\Desktop\Pythonstudy\game\sound\__init__.py
C:\Users\USER\Desktop\Pythonstudy\game\sound\echo.py
C:\Users\USER\Desktop\Pythonstudy\game\graphic\__init__.py
C:\Users\USER\Desktop\Pythonstudy\game\graphic\render.py

 

 

 

3. echo.py와 render.py 파일을 각각 아래와 같이 만든다.

 

 

 

4. set 명령어로 환경변수에 디렉터리 추가하고, 인터프리터 실행한다.

 

 

 

5. 패키지 안의 함수를 실행한다.

※ 한번 실행하고 인터프리터 종료해주고 다시 인터프리터를 실행시켜주어야한다.

 

echo 모듈을 import 하여 실행

 

echo 모듈이 있는 디렉터리까지를 from..import 하여 실행

 

echo 모듈의 echo_test 함수를 직접 import하여 실행

 

 

 

 

오류

요거는 불가능

import game을 했을 경우에는 game 디렉터리의 모듈과 game 디렉터리의 __init.py__에 정의한 것만 참조가능하다.\

 

import a.b.c 를 할 때 마지막의 c는 항상 모듈 또는 패키지 여야만한다.

 

 

 

 

__init__.py 의 용도

__init__.py 파일은 해당 디렉터리가 패키지의 일부라는 것을 알려준다.

 

위의 상황에서 from game.sound import * 를 입력하여 echo.echo_test()를 입력해도 echo 모듈을 사용할 수 없다.

특정 디렉터리의 모듈을 *를 사용해서 import 할 때에는

그 디렉터리의 __init__.py 파일에 __all__ 변수를 설정하고 import 할 수 있는 모듈을 정의해주어야 한다.

 

__all__은 sound 디렉터리에서 *기호를 이용해서 import 할 경우에 이곳에 정의된 echo모듈만 import 한다는 의미이다.

 

성공!

 

 

 

relative 패키지

위의 상황에서 graphic 디렉터리의 render.py 모듈이 sound 디렉터리의 echo.py 모듈을 사용하고 싶을 때에는 realtive 하게 수정하면 된다.

 

 

from game.sound.echo import echo_test 을 추가해주는 방법이 첫번째 방법이다.

 

 

 

from ..sound.echo import echo_test 를 추가하는 것이 두번째 방법이다.

 

 ..  은 부모디렉터리를 의미한다. 

이것은 모듈 안에서만 사용할 수 있다.

728x90

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

[Python] 3과 5의 배수 합하기  (0) 2021.01.18
[Python] 파이썬 예외처리  (0) 2021.01.15
[Python] 인터프리터 종료  (0) 2021.01.15
[Python] 파이썬 - 모듈  (0) 2021.01.15
[Python] 파이썬 - 클래스(class)  (0) 2021.01.14
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!