본문 바로가기
멋쟁이사자처럼 AI스쿨

모듈과 패키지(파이썬 강의 Day5)

by 헬푸밍 2023. 1. 8.

1. 모듈

변수, 함수, 클래스를 하나의 파일(.py)로 모아서 코드 작성

 

그러면 모듈을 만들어보자!

%%writefile ai_school.py
data = 'python'

def echo(msg):
    print('ai school : ', msg)

이렇게 data변수와, echo함수가 있는 ai_school모듈을 만들었다!

이렇게 모듈이 잘 생성되었다는 결과가 출력되고...

 

이렇게 파일을 보면 ai_school.py가 만들어졌고

%ls

이렇게 코드로도

확인해볼 수 있다.

 

모듈을 만들었으니 이제 모듈을 사용해보자!

import ai_school

이렇게 모듈을 import해주고

%whos

%whos 매직 커맨드로 현재 메모리에 할당된 변수정보를 확인해보면

모듈 ai_school을 확인할 수 있다.

 

%cat 커맨드로 ai_school의 내용을 살펴보면...

%cat ai_school.py

위와 같이 아까 작성한 파일의 내용이 나온다.

 

이제 모듈안의 변수를 사용해보자!

ai_school.data

데이터 변수에 할당된 'python'이 출력된다.

 

아래 코드로 모듈안의 함수를 사용해보면...

ai_school.echo('fighting')

 

아래와 같이 as를 사용하면...

import ai_school as ais
print(ais.data)
ais.echo('fighting')

as 뒤에 부분만을 써서 사용할 수 있다.

위처럼 같은 결과가 나온다.

 

이제 모든 변수를 리셋하고 변수를 확인해보면...

%reset
%whos

이렇게 비어있는 상태가 된다.

 

이번엔 모듈에서 함수만 골라와서 import해보자!

from ai_school import echo
%whos

이렇게 함수만 import하고 변수를 확인해 보면...

함수만 할당된 것을 볼 수 있다.

 

함수를 모듈을 안쓰고 아래와 같이 쓸 수 있다.

echo('fighting!')

 

만약 모듈 내에서 여러개를 가지고 오고 싶으면...

from ai_school import data, echo

이렇게 ','로 구분해져 사용하고...

 

모두 다 가져오고 싶으면 아래 코드처럼 '*'을 이용해서 사용한다!

from ai_school import *

 

1. 패키지

여러개의 모듈디렉토리로 구분해서로 모아서 코드 작성

 

일단 디렉토리의 구조를 출력하는 우분투(Os)패키지인 tree를 설치하자!

!apt-get install tree -y

실행하면 아래처럼 설치가 된다.

- mkdir : 디렉토리 만들기

- -p : 상위 디렉토리를 만들면서 디렉토리를 만들기

- touch : 빈파일 생성

이렇게 세 가지 명령어를 이용해서 간단한 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

이렇게 코드를 작성해 주고 !tree명령어를 사용해 패키지의 구조를 확인하면...

위와 같이 2개의 디렉토리에 3개의 파일이 있는 패키지가 만들어진 것을 확인할 수 있다!

 

__init__.py

- 패키지에 있는 디렉토리의 모듈을 설정하는 파일이다.

- python 3.x 버전부터는 쓰지 않아도 문제가 없지만 하위버전 호환성을 이유로 써주는 것이 좋다.

 

이번엔 파일을 하나씩 추가해보자!

%%writefile stock/kor/kospi.py
def crawl_kospi():
    print('crawl_kospi')

첫번째로 crawl_kospi라는 함수를 kor디렉토리 안에 넣고...

 

%%writefile stock/kor/kosdaq.py
def crawl_kosdaq():
    print('crawl_kosdaq')

두번째로 crawl_kosdaq이라는 함수를 kor디렉토리 안에 넣고

 

%%writefile stock/usa/snp500.py
def crawl_snp500():
    print('crawl_snp500')

세번째로 snp500이라는 함수를 usa디렉토리 안에 넣고

 

%%writefile stock/usa/nasdaq.py
def crawl_nasdaq():
    print('crawl_nasdaq')

네번째로 crawl_nasdaq이라는 함수를 usa 디렉토리 안에 넣고

 

!tree명령어로 stock패키지의 구조를 확인해 보면..

!tree stock

이렇게 파일이 디렉토리 안에 잘 넣어진 것을 확인할 수 있다!

 

패키지의 모듈을 사용하려면...

아래처럼 import 패키지.하위패키지.모듈 as OOO으로 사용한다.

import stock.kor.kospi as skk
skk.crawl_kospi()

stock의 kor디렉토리(하위패키지)의 kosdaq모듈을 skk로 import하고 함수를 사용하면...

위처럼 함수가 실행된다.


이번 시간에는 모듈과 패키지를 알아봤습니다...

 

잘 이해가 가셨나요...?

댓글