List
- 파이썬 날개달기
- 클래스(class)
- 모듈(module)
- 패키지(package)
- 예외처리(exception)
- 내장함수
- 라이브러리(library)
- 연습문제
도트
(.
) 를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)로 관리 할 수 있게 해준다.A
모듈 이름 B
game/ # 디렉터리 이름 (루트 디렉터리)
__init__.py # 파이썬 모듈(확장자가 .py인 파일)
sound/ # 디렉터리 이름(서브 디렉터리)
__init__.py # 파이썬 모듈(확장자가 .py인 파일)
echo.py # 파이썬 모듈(확장자가 .py인 파일)
wav.py # 파이썬 모듈(확장자가 .py인 파일)
graphic/ # 디렉터리 이름(서브 디렉터리)
__init__.py # 파이썬 모듈(확장자가 .py인 파일)
screen.py # 파이썬 모듈(확장자가 .py인 파일)
render.py # 파이썬 모듈(확장자가 .py인 파일)
play/ # 디렉터리 이름(서브 디렉터리)
__init__.py # 파이썬 모듈(확장자가 .py인 파일)
run.py # 파이썬 모듈(확장자가 .py인 파일)
test.py # 파이썬 모듈(확장자가 .py인 파일)
※ init.py 파일의 용도
.py
파일 생성# echo.py
def echo_test():
print ("echo")
# render.py
def render_test():
print ("render")
/Users/SEUNGHOSHIN/Documents/doit/game/__init__.py
/Users/SEUNGHOSHIN/Documents/doit/game/sound/__init__.py
/Users/SEUNGHOSHIN/Documents/doit/game/sound/echo.py
/Users/SEUNGHOSHIN/Documents/doit/game/graphic/__init__.py
/Users/SEUNGHOSHIN/Documents/doit/game/graphic/render.py
C:/doit
디렉터리를 추가한다. 그리고 파이썬 인터프리터(Interactive shell)를 실행C:\> set PYTHONPATH=C:/doit
C:\> python
Type "help", "copyright", "credits" or "license" for more information.
반드시 명령 프롬프트에서 파이썬 인터프리터를 실행하여 진행해야함 (IDLE셸, 비쥬얼 스튜디오 에선 오류 생김
- 도트 연산자
.
를 사용해서import a.b.c
를 할 때 마지막 항목(c
)는 반드시 모듈 또는 패키지여야만 한다.
echo 모듈
을 import
하여 실행하는 방법from
디렉터리1. 디렉터리2. 모듈이름
>>> import game.sound.echo
>>> game.sound.echo.echo_test()
echo
echo 모듈
이 있는 디렉터리까지를 from ... import하여 실행하는 방법from
디렉터리1. 디렉터리2
import
모듈이름
>>> from game.sound import echo
>>> echo.echo_test()
echo
from
디렉터리1. 디렉터리2. 모듈이름
import
함수
>>> from game.sound.echo import echo_test
>>> echo_test()
echo
실행 불가
import 디렉터리1
+디렉터리2.디렉터리3.모듈.함수()
>> import game >> game.sound.echo.echo_test() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'sound'
import 디렉터리1.디렉터리2.디렉터리3.모듈.함수()
>> import game.sound.echo.echo_test Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named echo_test
import game
을 수행하면 game디렉터리의모듈(.py 파일)
들과__init__.py
에 정의한 것만 참조할 수 있다.
__init__.py
파일은 해당 디렉터리가 패키지의 일부분임을 알려줌
game
, sound
, graphic
이 패키지에 포함된 디렉터리에 __init__.py
가 없으면 패키지로 인식 자체가 안됨graphic 디렉터리
의 render.py(모듈)
이 sound 디렉터리
의 echo.py(모듈)
을 사용하고싶다면?from … import …
사용해서 진행# render.py
from game.sound.echo import echo_test
def render_test():
print ("render")
echo_test()
# render.py
from ..sound.echo import echo_test # from 뒤 .. 은 부모 디렉터리를 의미
def render_test():
print ("render")
echo_test()
graphic
과sound
의 부모 디렉터리는game
이며,graphic
과sound
는동일한 깊이(depth)
이므로 부모 디렉터리를 가르키는..
을 사용하여 import가 가능하다
relative한
접근자
에는 다음과 같은 것이 있다.
. .
– 부모 디렉터리.
– 현재 디렉터리
**모듈안에서만 사용 가능 / 파이썬 인터프리터에서 사용 불가