[패스트캠퍼스python] 모듈과 패키지

파이썬 인강 : 모듈과 패키지

우리가 알게 모르게 사용하고 있었던 모듈에 대해 배워보자

모듈과 패키지

가장 중요한 점은 왜 패키지로 개발/배포/사용해야하는지 그 이유를 명확히 알아야 한다는 점이다.

  • 모듈 : 파일 하나하나가 모듈. 독립적인 파일
  • 패키지 : 모듈들을 파일형태로 관리하는 것을 패키지리고 한다

참고로

  • .. : 부모 디렉토리 이동
  • . : 현재 디렉토리 이동

아래 두가지 파일을 이용해서 모듈과 패키지에 대해 공부해보자
fibonacci.py는 피보나치수열 만드는 파일이다.

fibonacci.py

calculations.py는 아래와같은 세가지의 함수를 가지고 있다

calculations.py

1. 클래스를 가져와서 사용하는 방법

클래스를 가져올 수 있다

  1. 일반적인 방법
1
2
3
4
5
6
7
8
9
10
11
from pkg.fibonacci import Fibonacci #클래스명(fibonacci)

Fibonacci.fib(10)

print("ex1 : ", Fibonacci.fib2(20))
print("ex1 : ", Fibonacci().title) #인스턴스화

# 출력값은
0 1 1 2 3 5 8
ex1 : [0, 1, 1, 2, 3, 5, 8, 13]
ex1 : fibonacci

피보나치수열이 잘 출력되었음을 알수있다.

  1. *을 사용한 방법
    메모리를 많이 사용하기때문에 권장하지 않는 방법이지만 알아둬야한다

별을 이용한 방법

*는 모든 리소스를 다 가져오는 것을 뜻한다.
터미널을 보면 피보나치 수열이 잘 나타남을 확인할 수 있다

  1. as 사용하는 방법
    권장하는 방법으로 계속 class fullname을 사용하는 것보다 가독성이 높기때문이다.
    as는 Alias(엘리아스)의 약자로 별칭이란 뜻이다.
1
2
3
4
5
6
7
8
9
10
11
from pkg.fibonacci import Fibonacci as fb

fb.fib(50)

print("ex3 : ", fb.fib2(60))
print("ex3 : ", fb().title)

# 출력값
0 1 1 2 3 5 8 13 21 34
ex3 : [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
ex3 : fibonacci

2. 함수를 가져와서 사용하는 방법

  1. import + as 조합
    이번에는 클래스말고 함수를 가져와 사용해보자.

import와 as 조합

클래스를 가져왔던 것과

  1. from + import + as 조합
    권장하는 방법으로 모듈의 많은 함수들 중에서 필요한 함수만 가져와서 쓸수있다
    어떠한 언어를 다루던 리소스를 낭비하지 않도록 명확히 코딩하는 것이 좋다
1
2
3
4
5
6
from pkg.calculations import div as d

print("ex5 : ", int(d(100,10)))

# 출력값은
ex5 : 10

3. builtins(빌트인)

1
2
3
import builtins

print(dir(builtins))

출력값이 너무 길어서 이미지파일로 준비했다

builtins 출력값

우리가 빌트인인지 모르고 사용했던 list함수, type함수등이 들어가 있는 것을 확인할 수 있다

4. __init__.py의 필요성

용도 : 해당 디렉토리가 패키지임을 선언할 때 사용한다.
Python 2.x대를 사용하고 있다면 __init__.py가 필수이다
Python3.x : 파일이 없어도 패키지 인식하지만 3.x보다 하위 버전 호환 위해서 생성하는 것이 안전

5. 단위테스트

독립적으로 만든 파일이 독립적으로 잘 실행되는지는 확인하기 위해서 아래 if name문을 써준다
아래 형태로 쓰도록 딱 정해놓았다.
만든함수()부분에 만들었던 함수들을 넣어 독립적으로 실행되는지 체크할 수 있다
if문이기때문에 import으로 가져온 파일에서는 출력이 안된다 GOOD!

1
2
3
4
5
# 단위 실행(독립적으로 파일 실행)
if __name__ == "__main__":
print("This is", dir())
만든함수()
만든함수()