#1. 모듈과 패키지의 이해
파이썬은 매우 간결한 프로그래밍 언어
그 가장 큰 이유
- 많은 사람들이 이미 파이썬으로 프로그램을 작성해두었기 때문!
모듈(module) → 이미 작성된 프로그램
패키지 (packages)→ 이런 프로그램의, 모듈의 묶음
모듈의 개념
- 많은 제품들은 여러 부품으로 구성되며, 모듈화되어 판매되고 있음
- 대표적인 예 ; 레고 블록
- 하나만으로도 제품 but, 다른 블록과 연결 및 큰 밑판에 조립함으로써 거대한 작품도 만들 수 있음
- 이때 레고 블록 하나하나가 바로 모듈
- 자동차 부품, 벽돌 .. 등
- 대표적인 예 ; 레고 블록
패키지의 개념
- 모듈의 묶음
- 모듈 호출
- ‘from’ 사용
- 모듈 호출하기 위해 패키지부터 호출하는 명령어
#2. 모듈 만들기
모듈 만들기 실습
- in 파이썬 → .py 파일 자체가 모듈임
- 가장 쉽게 파이썬 모듈 만드는 방법
- 디렉터리에서 .py파일 만들고
- 그 파일에 필요한 함수 저장
- ⇒ 다른 파일에서 import문 사용하여 해당 모듈 함수 불러낼 수 있음
- 간단한 모듈 만들어 보기(1)→ .py로 저장해야 함
#파일 이름 : fah_converter.py
def convert_c_to_f(celcius_value):
return celcius_value * 9.0 / 5 + 32
→ .py로 저장해야 함
모듈 불러와 사용해보기
#파일 이름 : module_ex.py
#1
import fah_converter
print("Enter a celsisus value:")
celsius = float(input())
fahrenheit = fah_converter.cover_c_to_f(celsius)
print("That's", fahrenheit, "degrees Fahrenheit.")
네임스페이스(Namespace)
- 모듈 호출의 범위 지정하는 것
- 하나의 모듈 안에 클래스 & 함수 & 변수 존재 → import 사용하여 호출 가능
- but, 클라이언트 프로그램 함수 이름과 호출된 모듈 함수 이름 같은 경우 있음
- 실수 또는 기존 클래스 상속받아 사용하다가 발생할 수도 잇음
- ⇒ 호출된 모듈의 사용 범위 명확히 지정해야 함!
- 네임스페이스 만들기
- 모듈 이름에 알리아스(alias) 생성 → 모듈 안으로 코드 호출하는 방법
- 알리아스 → 일종의 별칭, 모듈의 이름 바꿔 부를 때 사용
- 모듈의 이름이 너무 길거나 다른 코드와 헷갈리는 이름일 때
- as 키워드 사용 → 모듈 이름 간단히 바꿔 사용
- 알리아스 → 일종의 별칭, 모듈의 이름 바꿔 부를 때 사용
- 예시
import fah_converter as fah print(fah.covert_c_to_f(41.6)) #106.88000000000001
- 설명
- fah_converter → fah로 이름 변경하여 호출
- 해당 모듈 안 함수 클래스 변수 호출하여 사용하기
- [모듈명.함수명(또는 클래스명/변수명)]
- from 구문 사용 → 모듈에서 특정 함수 및 클래스만 호출하는 방법
- 예시
from fah_converter import covert_c_to_f print(covert_c_to_f(41.6)) #106.88000000000001
- 설명
- ‘from 모듈명 import 모듈 안의 함수명’
- 이경우, 별도의 모듈명 쓰지 않아도 단독 사용 가능
- 주의할 점
- from은 꼭 모듈 호출하기 위한 키워드가 아님
- 패키지 호출 및 해당 패키지 안 모듈 호출할 때도 사용하기에
- 별표(*) 사용
- 해당 모듈 안에 있는 모든 함수, 클래스. 변수 가져옴
- 사용 방법
- ‘from 모듈명 import *’
- 예시
from fah_converter import * print(convert_c_to_f(41.6)) #106.88000000000001
- 모듈 이름에 알리아스(alias) 생성 → 모듈 안으로 코드 호출하는 방법
- 세 가지 중 가장 선호하는 방법?
- 일반적으로 알리아스 생성하여 호출
- 각각의 함수 및 클래스가 어디서 나오는지 명확히 표현하는 것이 좋기 때문!
- ⇒ 같은 함수라도 convert_c_to_f보다 fah.convert_c_to_f라고 표기
- 일반적으로 알리아스 생성하여 호출
내장모듈의 사용
파이썬 → 프로그래밍 개발위해 기본적 사용해야 하는 문자 처리, 웹, 수학과 관련된 다양한 내장 모듈 제공/ 별다른 조치 없이 import문 한 줄로 사용 가능
- random 모듈
- 난수 생성 모듈
- 모듈 구성
- randint(); 정수 모듈 생성
- random(); 임의 난수 생성
- 사용 예시
import random #0~100사이 정수 난수 생성 print(random.randint(0,100)) #7 print(random.random()) #0.056550421789531846
- time 모듈
- 시간과 관련
- 시간 변경 및 현재 시각 알려줌
- 대표적으로 프로그램 동작하는 현재 시각 알 수 있음
- 사용 예시
#현재 시각 출력 import time print (time.localtime()) #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=22, tm_min=9, tm_sec=21, tm_wday=6, tm_yday=231, tm_isdst=0)
- urllib 모듈
- 웹과 관련됨
- 대표적으로 request 모듈을 사용하면 특정 URL의 정보 불러올 수 있음
- 사용 예시
import urllib.request response = urllib.request.urlopen("<http://theteamlab.io>") print(response.read())
- urllib.request.urlopen()
- 괄호 안에 특정 웹 주소 입력하면 해당 주소의 HTML 정보 가져옴
- 이외의 다양한 파이썬 모듈은?
- 가장 좋은 방법은 구글에 서치!
- 특히 영어로..
- if 프로그래밍 수행에 걸린 시간 알아내는 모듈 찾고 싶다면?
- 다음과 같은 방식으로 검색어 입력
- python time module run time
- 또 다른 방법?
- 파이썬 코리아에 문의
#3. 패키지 만들기
패키지의 구성
- 하나의 대형 프로젝트를 수행하기 위한 모듈의 묶음
- 모듈의 구성
- 하나의 파일
- 패키지 구성
- 파일이 포함된 디렉터리(폴더)로 구성
- 즉, 여러 개의 .py 파일 → 하나의 디렉터리에 들어가 있는 것
- 라이브러리
- 다른 사람이 만든 프로그램을 불러와 사용하는 것
- 파이썬 → 패키지가 하나의 라이브러리임
- 패키지의 예약어
패키지 만들기 실습
- 인터넷에서 주식 정보 가져와 데이터베이스에 저장 + 필요한 정보 계산 프로그램
1단계: 디렉터리 구성
- 패키지 이름
- ‘roboadvisor’
- 대부분 소문자 사용
- 기능
- crawling(크롤링)
- 주식 관련 데이터를 인터넷에서 가져오는 기능
- database(데이터베이스)
- 가져온 데이터를 데이터베이스에 저장하는 기능
- analysis(분석)
- 해당 정보를 분석하여 의미 있는 값을 뽑아내는 기능
- crawling(크롤링)
- 각 패키지 내 → 세부 패키지에 맞춰 디렉터리 구성하기
- cmd 창에 다음 명령 입력 → 디렉터리 생성
mkdir roboadvisor cd roboadvisor mkdir crawling mkdir database mkdir analysis
- 디렉터리 구성됨
- 2단계: 디렉터리별로 필요한 모듈 만들기
- 하나의 패키지 중첩된 구조로 만들 수 있으므로 패키지 안에 또 하나의 패키지 들어갈 수 있음
- but, 각 디렉터리르 하나의 패키지로 선언하기 위해서는 예약된 파일 만들어야 함
- ⇒ ‘init.py’
- ‘init.py’ ?
- 각 디렉터리가 패키지임을 나타내는 예약 파일
- 기본 .py 모듈 파일 + 각 디렉터리에 ‘init.py’ 파일 추가 → 패키지 기본 구조 만들어짐
- 각 디렉터리 안에 .py파일 만들어 구성!
- 각 하위 패키지 포함된 모듈에 필요한 기능을 구현
- analysis 디렉터리
def series_test(): print('series')
def statics_test(): print("statics")
- analysis 디렉터리
- 실제 사용 → 파이썬 셸에 입력
→ roboadvisor의 상위 디렉터리에서 파이썬 셸 실행해야 정상적 수행from roboadvisor.analysis import series series.series_test() #series
- 설명
- ‘**pycache**’ 생성
- 해당 프로그램 작동될 때 사용하기 위한 모듈들의 컴파일 결과 저장
- 이후 그 시점에서 해당 모듈을 수ㅎ정해도 결과가 반영되지 X
- 완전히 종료된 후 수정해야 결과 반영됨
- ‘**pycache**’ 생성
- 3단계: 디렉터리별로 ‘init.py’ 구성하기
- 4단계: ‘main.py’ 파일 만들기
- 패키지를 한 번에 사용하기 위해 roboadvisor 디렉터리에 main,py 파 일을 만듦
- 만드는 이류
- 패키지 자체 실행 위해
- 파일 구성
- 기본 호출해야 하는 여러 모듈
- from & import로 호출 → ‘if name == ‘ main ‘ 아래에 실제 실행코드 작성
from analysis.series import series_test from crawling.parser import parser_test if name == ’ main series_test() parser_test()
- 기본 호출해야 하는 여러 모듈
- 5단계: 실행하기 (패키지 이름만 호출)
- 모든 코드 작성 후 해당 패키지 최상위 디렉터리에서 ‘python 패키지명’ 입력
python roboadvisor series parser
패키지 네임스페이스
- 모듈 서로 호출할 때 사용하는 패키지 네임스페이스에 대해 알아보자
- 모듈과 달리 훨씬 더 많은 중간 단계를 거쳐 복잡함
- 종류
- 절대 참조
- 전체 패키지의 구조 생각 → 모듈의 경로 모두 호출
- 상대 참조
- 호출하는 디렉터리를 기준으로 호출
- 절대 참조
- 절대 참조
- 상대 참조
#4. 가상환경 사용하기
가상환경의 개념
- 다른 개발자가 만든 패키지를 직접 사용하는 방법
- 각 프로젝트에 맞는 프로그래밍 환경을 설정하는 것이 좋음
- ex. 데이터 다루는 프로젝트 / 웹 다루는 프로젝트 → 성격이 매우 다름
- 파이썬 → 이런 경우 지원 위해 가상환경이라는 개념으로 패키지 관리 도구 제공
- 일반적으로 프로젝트 수행할 때
- 코드 수행할 기본 인터프리터
- 프로젝트별로 필요한 추가 패키지까지 설치
- ⇒ 서로 다른 프로젝트 영향 주지 않도록 독립적인 프로젝트 수행 환경을 ㅅ구성할 수 있는데 이를 가상환경이라고 함
- 대표적인 가상황경 도구
- virtualenv
- 파이썬 기본 제공 가상환경 도구
- pip 이용하여 새로운 패키지 설치 가능
- conda
- miniconda의 전용 패키지 관리 도구
- 가상환경 관리 + 패키지 설치
- virtualenv
가상환경 설정하기
- conda 사용 → 가상환경 설정 방법 알아보자
- 가상환경 만들기
- cmd 창에 다음과 같은 명령어 입력
conda create -n my_project python=3.4
- 설명
- conda
- 실행 명령어
- create
- 가상환경 만드는 인수(argument)
- -n
- name 의 줄임말
- my_project
- 구성할 가상환경 이름
- python=3.4
- 설치되는 파이썬의 버전
⇒ ‘my_project라 는 이름의 가상환경을 python 3.4 버전으로 만들어라.’
- 명령어 입력후
- ‘Proceed ([y]/n)?’ → y 입력 → 설치 시작
- 가상환경 실행하기
- 가상화면 만들면 나타나는 화면에서 설명해줌
- ‘activate my_project’
- 해당 가상환경을 활성화하라는 의미
- 형식
- [activate 가상화면 이름]
- 이제부터 해당 가상환경의 인터프리터만 실행됨
- ‘where python’
- 현재 실행되는 파이썬의 위치 출력
- ‘deactivate’
- 가상환경 종료
- 가상환경 패키지 설치하기
- ‘conda install matplotlib’
- 형식
- [conda install 설치할 패키지 이름]
- matplotlib
- 그래프 관리 패키지
- 형식
- ‘conda install matplotlib’
- 가상환경 패키지 실습하기
- matplotlib 실습
- 코드
import matplotlib.pyplot as pit pit.plot([1, 2, 3, 4]) #[<matplotlib.lines.Line2D object at 0x000001E8CC52C080>] plt.ylabel('some numbers') #Text(0, 0.5,'some numbers') plt.show()
- matplotlib 실습
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
[2팀/김세연] 10주차 파이썬 스터디 - 예외처리 (0) | 2023.05.31 |
---|---|
[2팀/김가림, 최다예] 9차시 모듈과 패키지 (0) | 2023.05.26 |
[1팀/한규림] 9주차 파이썬 스터디 - 모듈과 패키지 (0) | 2023.05.25 |
[3팀/김경은] 9주차 파이썬 스터디 - 모듈과 패키지 (0) | 2023.05.24 |
[2팀/김세연] 9차시 파이썬 스터디 - 모듈과 패키지 (0) | 2023.05.24 |