일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- gather_nd
- API Gateway
- chatGPT
- tensorflow text
- Airflow
- hadoop
- UDF
- flask
- integrated gradient
- BigQuery
- XAI
- API
- login crawling
- airflow subdag
- correlation
- Retry
- 상관관계
- session 유지
- GCP
- grad-cam
- 공분산
- requests
- Counterfactual Explanations
- spark udf
- GenericGBQException
- 유튜브 API
- subdag
- top_k
- youtube data
- TensorFlow
- Today
- Total
데이터과학 삼학년
파이썬 패키지 개념 (feat. 코딩도장) 본문
모듈은 스크립트 파일이 한 개지만 패키지는 폴더(디렉터리)로 구성
▼ 그림 45-5 패키지 폴더 구성
먼저 프로젝트 폴더(C:\project) 안에 calcpkg 폴더를 만듭니다. 그리고 다음 내용을 calcpkg 폴더 안에 __init__.py 파일로 저장하세요.
calcpkg/__init__.py
# __init__.py 파일은 내용을 비워 둘 수 있음
폴더(디렉터리) 안에 __init__.py 파일이 있으면 해당 폴더는 패키지로 인식됩니다. 그리고 기본적으로 __init__.py 파일의 내용은 비워 둘 수 있습니다(파이썬 3.3 이상부터는 __init__.py 파일이 없어도 패키지로 인식됩니다. 하지만 하위 버전에도 호환되도록 __init__.py 파일을 작성하는 것을 권장합니다).
45.3.1 패키지에 모듈 만들기
이제 calcpkg 패키지에 모듈을 두 개를 만들겠습니다. 첫 번째 모듈은 덧셈, 곱셈 함수가 들어있는 operation 모듈이고, 두 번째 모듈은 삼각형, 사각형의 넓이 계산 함수가 들어있는 geometry 모듈입니다.
먼저 다음 내용을 calcpkg 폴더 안에 operation.py 파일로 저장하세요.
calcpkg/operation.py
def add(a, b):
return a + b
def mul(a, b):
return a * b
그리고 다음 내용을 calcpkg 폴더 안에 geometry.py 파일로 저장하세요.
calcpkg/geometry.py
def triangle_area(base, height):
return base * height / 2
def rectangle_area(width, height):
return width * height
45.3.2 패키지 사용하기
이제 스크립트 파일에서 패키지의 모듈을 사용해보겠습니다. 다음 내용을 프로젝트 폴더(C:\project) 안에 main.py 파일로 저장한 뒤 실행해보세요(main.py 파일을 calcpkg 패키지 폴더 안에 넣으면 안 됩니다).
- import 패키지.모듈
- 패키지.모듈.변수
- 패키지.모듈.함수()
- 패키지.모듈.클래스()
main.py
import calcpkg.operation # calcpkg 패키지의 operation 모듈을 가져옴
import calcpkg.geometry # calcpkg 패키지의 geometry 모듈을 가져옴
print(calcpkg.operation.add(10, 20)) # operation 모듈의 add 함수 사용
print(calcpkg.operation.mul(10, 20)) # operation 모듈의 mul 함수 사용
print(calcpkg.geometry.triangle_area(30, 40)) # geometry 모듈의 triangle_area 함수 사용
print(calcpkg.geometry.rectangle_area(30, 40)) # geometry 모듈의 rectangle_area 함수 사용
실행 결과
30
200
600.0
1200
calcpkg 패키지의 operation 모듈과 geometry 모듈을 가져와서 안에 들어있는 함수를 호출했습니다.
이처럼 패키지의 모듈을 가져올 때는 import 패키지.모듈 형식으로 가져옵니다. 그리고 패키지.모듈.함수() 형식으로 모듈의 함수를 사용합니다(변수와 클래스도 같은 형식).
45.3.3 from import로 패키지의 모듈에서 변수, 함수, 클래스 가져오기
물론 패키지의 모듈에서 from import로 함수(변수, 클래스)를 가져온 뒤 패키지와 모듈 이름을 붙이지 않고 사용할 수도 있습니다.
- from 패키지.모듈 import 변수
- from 패키지.모듈 import 함수
- from 패키지.모듈 import 클래스
다음은 calcpkg 패키지의 operation 모듈에서 add, mul 함수를 가져옵니다.
from calcpkg.operation import add, mul
add(10, 20)
30
mul(10, 20)
200
지금까지 만든 main.py 스크립트 파일과 calcpkg 패키지의 계층을 그림으로 나타내면 다음과 같은 모양이 됩니다. main.py 파일이 있는 폴더에 calcpkg 패키지가 있고, calcpkg 패키지의 폴더 안에 __init__.py, operation.py, geometry.py 파일이 들어있습니다.
▼ 그림 45-6 calcpkg 패키지의 계층
https://dojang.io/mod/page/view.php?id=2449
'Python' 카테고리의 다른 글
내 코드를 테스트한다. (feat. pytest) (0) | 2022.03.28 |
---|---|
Python deque (0) | 2022.03.24 |
에라토스테네스의 체 (소수 구하기) (0) | 2021.10.20 |
리스트 정렬 (multiple key를 이용한 정렬) (0) | 2021.09.22 |
First-class function (일급함수) (0) | 2021.09.15 |