Python - 8. 모듈
Python
클래스 생성
멤버 필드
클래스
인스턴스
메서드
클래스(스태틱)
인스턴스
*Constructor / Destructor
*private( __ ) / public
=> 캡슐화
상속
object
다중상속
명시적 부모의 생성자 호출
super()
오버라이드
예외처리
try
except
else
finally
모듈 - 여러 코드를 한데 묶어 다른 곳에서 재사용할 수 있는 코드 모음
pip list
python
import sys
print( sys.path )
=> 이 경로에 나오는 것들이 모듈, 사용자 모듈 정의시 저장되는 위치
lib -> 기본 내장 라이브러리
lib\site packahe => 외부 서드파티 등에서 가져온 라이브러리
import os
print( os.environ['PATH'] ) -> 전체 환경에서 PATH로 지정된 곳이 다 나옴
CLASSPATH
PYTHONPATH => 모듈을 집어넣을 수 있는 공간 (환경변수에 추가 가능)
- 모듈 사용하기
먼저 사용할 모듈 파일을 만들고
# mod1.py
def add( a, b ):
return a + b
def sub( a, b ):
return a - b
# 실행부분 (import 되는 순간 같이 실행됨)
#print( add( 10, 20 ) )
# 독립 실행할 때 시작 부분
# 시작부분 정의하고 싶을 때
# 모듈 디버깅
if __name__ == "__main__" :
print( 'mod1 : ', add( 10, 20 )
이 모듈을 가져다 사용할 메인 모듈을 만들어서 실행한다.
# main1.py
import mod1 # 모듈전체를 가져옴
from mod1 import add, sub # 모듈의 특정 부분만 가져옴
print( dir(mod1) )
# 클래스 X / namespace로 접근
print( mod1.sub( 2, 1 ) )
print( add( 1, 2 ) ) # add를 import해서 내 함수처럼 사용가능
print( sub( 4, 1 ) )
__name__ 을 이용해서 모듈을 임포트 되서 사용될 때와 직접 사용할 때는 구분해서 동작하도록 할 수 있다.
python 설치폴더에서
Lib\site-packages 폴더에 mod1.py를 복사하고 mod2.py로 이름을 바꿔서 저장해두고
메뉴-Window-Preference->PyDev-Interpreters-Python Interpreters 에서 library를 다시 apply 해주면 모듈이 등록되고
모듈을 사용할 수 있게된다.
새 프로젝트에서 main모듈을 만들어 mod2를 사용해보면 똑같이 사용할 수 있다.
# main1.py
import mod2
print( mod2.sub(10, 2) )
모듈은 이름을 새롭게 정의하여 저장할 수도 있고, 같은 이름이 있으면 덮어써진다.
as를 이용해서 별칭으로 불러 오는 것도 가능하다.
# ex01.py
import xml.sax.handler
import xml.sax.handler as handler
print( xml.sax.handler )
print( handler )
패키지 - 여러 모듈을 하나로 묶은 것
# echo.py
def echo_test() :
print( 'echo_test' )
# screen.py
def screen_test():
print( 'screen_test' )
패키지의 모듈 사용하기
# main2.py
#import game.graphic.screen
import game.graphic.screen as screen
#print( dir( game.graphic.screen ) )
#game.graphic.screen.screen_test()
print( dir( screen ) )
screen.screen_test()
1. game.graphic.screen으로 패키지경로와 모듈까지 입력해서 import 시킨것
2. game.graphic.screen을 screen으로 별칭을 붙여서 편하게 사용하는 것
# main3.py
#from game.graphic import screen
from game.graphic.screen import screen_test
#print( dir( screen ) )
#screen.screen_test()
screen_test()
3. from으로 패키지명까지 입력하고 screen을 import 해서 screen만 입력해서 사용
4. screen 모듈까지 from에 넣고 screen_test 메소드만 import 해서 사용
- node.js -> npm
- python -> pip
- https://pypi.org/ - 필요한 모듈을 가져다가 사용
ex)
Beautifulsoup - Jsoup
https://www.crummy.com/software/BeautifulSoup