이번 강의에서는 파이썬의 패키지를 만들고 활용하는 방법을 알아보겠습니다.
대규모 프로젝트를 수행하기 위해서는 이미 잘 만들어진 코드를 활용하는 것이 중요한데요, 잘 만들어진 코드를 활용하는 방법이 모듈을 사용하는 것입니다.
그러나 모듈의 수가 많아지면 폴더(디렉토리) 아래에 계층적으로 두는 것이 더욱 편리합니다.
한 폴더에 유사한 성격의 여러 모듈을 두고 이 폴더를 가져오는 방식으로 개발을 하는데 이 폴더를 패키지라고 합니다. 본 강의에서는 예제를 통해서 파이썬의 패키지 만드는 방법을 살펴보도록 하겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
2. 동영상 강의자료와 코드
• 동영상 강의(널널한 교수의 기초 파이썬)
• https://www.youtube.com/watch?
v=TK6RLGaM3Ao&list=PL2P1Vm9k53HOEn-QYXAfblQWkR0OW9mKX
• 소스코드( GitHub )
• https://github.com/dongupak/Basic-Python-Programming
5. 파이썬 패키지
• 큰 프로젝트를 수행하기 위해서는 이미 잘 만들어진 코드를 활용해
야 한다.
• 잘 만들어진 코드를 활용하는 방법이 모듈을 사용하는 것이다
• 그러나 모듈의 수가 많아지면 폴더(디렉토리) 아래에 계층적으로 두
는 것이 더욱 편리하다
• 한 폴더에 유사한 성격의 여러 모듈을 두고 이 폴더를 가져오는 방
식으로 개발을 하는데 이 폴더를 패키지라고 한다
6. 패키지 경로
• 파이썬에서 모듈은 .py 파일이다. 패키지는 모듈의 컬렉션(모듬)이
다
• 폴더(디렉토리) 안에 __init__.py 파일이 있으면 해당 폴더는 패키
지로 인식되는데 파이썬 3.3 버전 부터는 이 파일이 없어도 패키지
로 인식된다
• 예제: pkgTutorial 이라는 폴더 아래에 math_pkg, str_pkg 라는
폴더를 만들고 이 폴더 아래에 필요한 모듈을 만들어 보자
7. math_op.py str_op.py
수학 연산에 관련된 모듈 = 단일 파일임 문자열 연산에 관련된 모듈
pkgTutorial
math_pkg str_pkg
작업 디렉토리
(폴더)
패키지 디렉토리
(폴더)
pkgTutorial 이라는 작업 디렉토리 아래에 하위폴더와 모듈 파일을 둔다
8. math_op.py 라는 파일(모듈)내에 add(), sub() 라는 함수가 있음
str_op.py 라는 파일(모듈)내에 upper(), lower() 라는 함수가 있음
math_op.py
str_op.py
10. 파일경로
• 파일은 계층적인 구조의 폴더 혹은 디렉토리 아래에 저장된다
• Windows 운영체제의 파일 시스템에서 파일은 C:Usersdongupak 과 같이
C:, D:와 같은 드라이브 이름과 Usersdongupak 과 같은 폴더명 아래에 저장
되며
• macOS나 Linux 운영체제는 /Users/dongupak 과 같은 이름의 폴더명 아래
에 저장된다. 여기서 dongupak은 사용자 아이디.
• 사용자의 파일이 저장되는 곳을 홈 디렉토리라고 하는데 /Users/dongupak
이 디폴트 홈 디렉토리임
• 본 예제에서는 사용자의 홈 디렉토리 아래에 작업 폴더를 만들것이다
15. from … import … 문
• 함수를 호출할 때 패키지이름.모듈이름을 이용하여 전체 경로를 다 적어주
는 것은 매우 번거롭다
• from … import … 문을 이용하여 간략화할 수 있다
import math_pkg.math_op
print('100 + 200 =‘,math_pkg.math_op.add(100,200))
from math_pkg import math_op
print('100 + 200 =‘,math_op.add(100,200))
16. from … import …
from math_pkg import math_op
print('100 + 200 =‘,math_op.add(100,200))
from 패키지_이름 import 모듈_이름
사용할 때에는 모듈이름.모듈내의 함수이름을 불러서 사용함