(파이썬) Modules and Packages

2022. 11. 30. 19:40파이썬

728x90

#1 

Module: 특정한 기능을 지닌 한 조각의 소프트웨어

예) 게임 화면을 그려주는 모듈, 게임 규칙을 담당하는 모듈

 

이 모듈들을 떼어다가 다른 소프트웨어에 붙힐 수 있다. 

모듈의 이름은 파이썬의 파일이름과 동일하다. 

헤더파일같은 느낌인듯 

 

게임화면을 그려주는 모듈 draw.py가 있다고 가정 하고 나는 game.py를 만드는 중이다.

# game.py
# import the draw module 
import draw

def play_game():
    ...

def main():
    result = play_game()
    draw.draw_game(result)  #import한 모듈의 draw_game이라는 함수를 사용하려고 할 때 이렇게

# 이 스크립트가 실행될 때 main()가 실행되도록  
if __name__ == '__main__':
    main()
# game.py
# import the draw module
from draw import draw_game  #draw.draw_game(result)하기 귀찮다할 때 사용
                            #using namespace와 비슷 

def main():
    result = play_game()
    draw_game(result)

이것도 귀찮다 

# game.py
# import the draw module
from draw import *  #이렇게 하면 draw모듈 안의 모든 함수들을 draw. 안붙히고 사용 가능

def main():
    result = play_game()
    draw_game(result)

#2

모듈의 이름을 내가 쓰기 편한 걸로  바꾸어 쓰고 싶을때 

import draw_textual as draw

#3

모듈을 여러번 import 해도 한번만 초기화 된다.

 

#4

모듈의 경로를 확인할 때 기본적으로 내가 작업중인 로컬 디렉토리와 모듈이 빌트인 되있는 디렉토리를 먼저 확인  

->거기에도 없다면 환경변수에 명시된 경로를 확인

PYTHONPATH=/foo python game.py  ->( 명령 프롬포트에서 하는 방법)

 

#5

import 커맨드가 실행되기 전에 

sys.path.append("/foo")  #모듈의 검색 경로 추가

저 명령어로 모듈의 위치 검색 경로 추가 

(sys.path : 모듈의 검색 경로를 지정하는 리스트)

 

#6

built-in 모듈 탐색하기

# import the library
import urllib

# use it
dir(urllib)  #이 라이브러리에 존재하는 함수들과 항목들이 어떤거 있는지 출력
help(urllib.request)  #이 라이브러리에 있는 request라는 명령어가 뭔지 설명 출력

 

#7 

package : 다양한 모듈들과 또 다른 패키지들이 모여있는 namespace,

특정 조건을 만족하는 디렉토리,

(특정 조건:  __init__.py가 반드시 포함되어 있어야함.)

 

#8 

패키지 안의 모듈을 사용하고 싶을 때

import foo.bar   #foo라는 패키지 안에 bar라는 모듈을 사용하고 싶을 때

이때는 모듈 bar안의 함수를 사용하고 싶다면 foo.bar.을 입력해야함 

from foo import bar  #foo라는 패키지 안에 bar라는 모듈을 사용하고 싶을 때

이때는 bar.만 입력하면 됨.

 

#9

from foo import *

처럼 *로 모든 모듈을  import 한다고 썼지만 bar 모듈만 쓰고 싶을 때는

__init__.py를 이렇게 수정하라.

__init__.py:

__all__ = ["bar"]

 

728x90

'파이썬' 카테고리의 다른 글

[pandas] 데이터 추출  (1) 2023.11.22
pd.Series()  (0) 2023.11.22
(파이썬) Dictionaries  (0) 2022.11.30
(파이썬) class and function  (0) 2022.11.30
(파이썬) loops  (0) 2022.11.29