6주차, 모듈, 패키지 정리, __name__
모듈은 함수나 변수, 클래스를 모아놓은 파일이다. 모듈은 다른 파이썬 프로그램에서
불러와 사용할 수 있게끔 만든 파이썬 파일이라 할 수 있다.
모듈의 종류
표준 모듈: 파이썬과 함께 따라오는 모듈
사용자 생성 모듈: 프로그래머가 직접 작성한 모듈
서드 파티 모듈: 파이썬 재단도, 프로그래머(본인)도 아닌 다른 프로그래머 또는
업체에서 제공한 모듈
외부 모듈을 사용할 수 있도록 하는 방법은 import 파일명
확장자는 생략하고 파일에 있는 변수나 함수는 파일명.변수 또는 파일명.함수()로 호출가능
모듈은 만들기 쉽다.
variable = 3
def addition(x, y):
return(x,y)
라 정의하고 이름을 func1.py라 저장한 뒤 불러보자
import func1 이라고 해도 모듈을 못찾을 것이다.
일단
import sys
sys.path
를 해보면 지금 연결된 경로가 나올 것이다. func1이 있는 디렉토리를 path에 추가하면
(sys.path.append('/경로'))
func1을 import할 수 있고, func1.addition(변수, 변수)의 형태로 함수를 불러올 수 있다.
만약 모듈에서 가져오고 싶은 함수의 수가 적으면 다 가져올 필요가 없다.
from func1 import addition
의 형태로 가져와도 된다.
그리고 가져올 때 as 로 앨리어스를 주면 편하게 조작할 수 있다.
sys.path를 쳤을 때 여러 경로가 나오는데 그 순서도 중요하다. 같은 이름의 모듈이 있을 경우
먼저 나오는 모듈을 사용한다.
__name__ 변수란 파이썬이 내부적으로 사용하는 특별한 변수로, 현재 실행중인 파일의 이름은
__main__ 이라는 이름으로, 불러온 모듈의 이름은 __name__이란 이름으로 저장된다.
지금 돌리고 있는 파이썬 파일에서 print(__name__)을 하면 __main__이 나온다.
하지만 func1모듈의 addition함수에 print(__name__)을 넣으면 모듈의 이름인
func1이 반환된다.
패키지란 모듈들을 모아놓은 디렉토리다.
패키지에서 특정한 모듈을 가져올 때는
from my_package import my_module
과 같은 형식으로 불러오면 된다.
주의할 점으론 python3.3버전 이전에는 디렉토리가 패키지로 인정받기 위해서는 __init__.py
라는 파일이 내부에 있어야 했다.
모듈 안의 모든 내용을 불러올 때 와일드카드 *을 썼다.
그렇다면 패키지 안의 모든 모듈을 불러오려면 어떻게 써야할까
패키지 디렉토리 안에 __init__.py 라는 파일을 만들고 __all__ = ['모듈이름1', '모듈이름2']
이런 식으로 와일드카드 *로 부를 수 있는 모듈 이름들을 직접 지정해 줘야한다.
from 패키지 이름 import *
이걸로 모두 부를 수 있다.