Python

Python - 8. 모듈

꿀먹는매미 2021. 3. 10. 10:53

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