TIL
[TIL] 10일차_PYTHON_Modual_Package
Molybdenum_j
2023. 3. 3. 19:02
▶ 모듈, 패키지
- 모듈 : 변수, 함수, 클래스를 하나의 파일(.py)로 모아서 코드를 작성
- 패키지 : 여러 개의 모듈 파일을 디렉토리로 구분하여 코드를 작성하는 방법 = 버전정보
▶ 모듈만들기
%%writefile ai_school.py
data = 'python'
def echo(msg):
print('ai school : ', msg)
Writing ai_school.py
%ls
ai_school.py sample_data/
▶ 모듈 사용
- import, from, as
- 모듈을 불러 올 때 = import
import ai_school
%whos
Variable Type Data/Info
-------------------------------
ai_school module <module 'ai_school' from '/content/ai_school.py'>
%cat ai_school.py
data = 'python'
def echo(msg):
print('ai school : ', msg)
ai_school.data
'python'
- import
import ai_school as ais
print(ais.data)
ais.echo('fighting!')
python
ai school : fighting!
import numpy as np
import pandas as pd
- from
from ai_school import echo
from ai_school import data, echo
from ai_school import * # <- data와 echo 둘 다 가져옴
▶ 패키지
- 여러 개의 모듈을 디렉토리 구분해서 코드를 작성한다.
- !apt-get install tree -y
- tree : 디렉토리의 구조를 출력하는 우분투(OS)패키지
- 패키지 구조만들기
- mkdir : 디렉토리 만들기
- -p : 상위 디렉토리를 만들면서 디렉토리를 만들기
- touch : 빈파일 생성
!rm -rf stock
!mkdir -p stock/kor
!mkdir -p stock/usa
!touch stock/__init__.py
!touch stock/kor/__init__.py
!touch stock/usa/__init__.py
!tree stock
stock
├── __init__.py
├── kor
│ └── __init__.py
└── usa
└── __init__.py
2 directories, 3 files
▶ __init__.py
- 패키지에 있는 디렉토리의 모듈을 설정하는 파일
- __init__.py python 3.x 버전부터는 쓰지 않아도 문제가 없다. 하지만 하위버전 호완성을 이유로 __init__.py를 써주는 것이 좋다.
- 패키지 설치 파일 만들기
!rm -rf stock
!mkdir -p stock/stock/kor
!mkdir -p stock/stock/usa
%%writefile stock/stock/kor/kospi.py
def crawl_kospi():
print('crawl_kospi')
Writing stock/stock/kor/kospi.py
- setup.py 파일 생성
%%writefile stock/setup.py
from setuptools import setup, find_packages
setup(
name='stock',
version='0.0.1',
author='ai_school',
author_email='ai_school@likelion.net',
packages=find_packages(),
include_package_data=True,
)
Overwriting stock/setup.py
- __init__.py 설정
%%writefile stock/stock/__init__.py
from .kor.kosdaq import crawl_kosdaq
from .kor.kospi import crawl_kospi
from .usa.nasdaq import crawl_nasdaq
Writing stock/stock/__init__.py
▶ 디렉토리 이동
- ./ : 현재 디렉토리 (생략가능)
- ../ : 상위 디렉토리
- ~/ : 현재 로그인 되어있는 계정의 최상위 디렉토리
- 만든 패키지 설치
- - e옵션 : 개발자 모드옵션 = 패키지 설치 후에 코드를 수정해도 코드가 적용된다.
!pip install -e stock
-> colab에서는 uninstall, 설치된 패키지 사용 동작 x
▶ 예외처리
- 코드의 에러를 처리하는 방법, 문법
- try, except,finally, raise
try:
print('connet database') # 리소스 사용
print(1/0)
except Exception as e:
print(e)
finally: # try 구문에 에러가 있던 없던 항상 코드 실행하는 구문
print('disconnect') # 리소스 반납
print('python')
connet database
division by zero
disconnect
python
- raise : 강제로 에러를 발생시킨다. <- 강제로 에러를 발생시켜 코드를 중단시킴)
- 에러만들기
class LowNumber(Exception):
def __str__(self):
return 'insert number grater then 10!'
출처-멋쟁이사자처럼_AISCHOOL_박두진강사님