스터디/파이썬 스터디 강의자료

[2팀/김세연] 9차시 파이썬 스터디 - 모듈과 패키지

알 수 없는 사용자 2023. 5. 24. 21:44

9차시-모듈과_패키지_강의안.pdf
1.29MB
9차시_모듈과패키지_과제.pdf
0.15MB

9주차-모듈과 패키지

모듈과 패키지의 이해

:파이썬은 다른 사람이 만든 프로그램을 호출하고,

자바는 하나의 프로그램을 작성하기 위한 코드는 김

파이썬은 매우 간결한 프로그래밍 언어임

파이썬에서 이미 작성된 프로그램을 모듈이라고 하고, 이 프로그램의 묶음은 패키지임.

 

모듈

ex) 레고 블럭, 하나하나가 모듈 ( 자동차 부품, 벽돌 등)

프로그래밍에서 모듈은? >작은 프로그램 조각

하나하나 연결해 어떤 목적을 가진 프로그램을 만들기 위한 작은 프로그램

각 모듈은 각각의 역할이 있어 서로 다른 모듈과 인터페이스만 연결되면 사용가능

(인터페이스: 함수에서 매개변수를 입력하는 약속, 해당 모듈을 사용하기 위해 모듈간의 연결을 위한 약속)

내장 모듈은 파이썬에서 기본적으로 제공하는 모듈

random 모듈

 

import random #random을 사용할 수 있도록 호출하는 명령어(=해당 모듈을 메모리에 올려라)
random.randint(l, 1000) # 해당 함수를 사용하기 위해 매개변수를 알아야 함
198

패키지

:패키지는 모듈의 묶음, from은 모듈을 호출하기 위해 패키지부터 호출하는 명령어

모듈들이 서로 포함 관계를 가지며 거대한 패키지를 만듦

모듈 만들기

.py 파일 자체가 모듈임

-가장 쉽게 모듈을 만드는 방법

.py파일을 만들고, 해당 파일에 함수를 저장하면 됨

다른 파이썬 파일에서 import를 사용해 해당 모듈의 함수 불러냄


def covert_c_to_f(celcius_value):
    return celcius_value *9.0/5+3

해당 내용을 fah_converter의 파일명으로 저장함

import fah_converter # 해당 파일의 이름만 입력하면 파일 내의 함수를 부름

print("Enter a Celsius value:")
Celsius = float(input())
fahrenheit = fah_converter.covert_c_to_f(celsius) # 사용함
print("That’s", fahrenheit, "degrees Fahrenheit.")
Enter a Celsius value:
10
That's 50.0 degrees Fahrenheit.

-네임스페이스

: 모듈 호출의 범위를 지정하는 것 / 함수 이름과 호출된 모듈의 함수 이름이 같은 경우

기존 함수 이름과 호출된 함수의 이름이 같은 경우

 

1) 모듈 이름에 알리아스(as)를 생성하여, 모듈 안으로 코드를 호출

(알리아스는 일종의 별칭으로, 모듈의 이름을 바꿔 부를 때 사용)

 

2) from 구문을 사용하여 모듈에서 특정함스, 클래스만 호출

from은 꼭 모듈을 호출하기 위한 키워드 X

패키지 호출, 해당 패키지 안에 있는 모듈을 호출할 때도 from 사용

 

3) 모듈 안에 있는 모든 함수,클래스,변수를 가져오는 * 사용

from 모듈명 import * > 해당 모듈안에 있는 모든 사용가능한리소스 호출

 

-내장 모듈 사용

random 모듈

:난수 생선 모듈로 임의의 난수를 생성하는 random()함수

import random
print(random.randint (0, 100))# 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 모듈

:웹주소의 정보를 불러옴

import urllib.request
response = urllib.request.urlopen("http://theteamlab.io")
#해당 주소의 HTML 정보를 가져옴
print(response.read())

 

패키지 만들기

하나의 대형 프로젝트를 수행하기 위한 모듈의 묶음

모듈하나의 파일로 이루어지고, 패키지는 파일이 포함된 디렉토리로 구성

여러 개의 .py파일이 하나의 디렉토리에 들어가 있는 것이 패키지

다른 사람이 만든 프로그램을 사용하는 것을 라이브러리리고 하는데 파이썬은 패키지를 하나의 라이브러리로 이해하면 됨

-패키지 만들기

1) 디렉터리(폴더) 구성하기 / 패키지 이름 정하기( 대부분 소문자 이용)

각 패키지 내에서 다시 세부 패키지에 맞춰 디렉터리를 구성

 

2) 디렉터리별로 필요한 모듈 만들기

하나의 패키지는 중청된 구조로 만들 수 있지만, 각각의 디렉터리를 하나의 패키지로 선언하기 위해서는 예약된 파일을 만들어야 함 > init.py

init.py : 각 디렉터리가 패키지임을 나타내는 예약 파일

 

3) 디렉터리별로 init.py 구성하기

__init__은 해당 디렉터리가 파이썬 패키지라고 선언하는 초기화 스크립트임

보통 해당 파일 안에는 해당 패키지가 포함된 모듈에 대한 정보가 있음

 

4) __main.py파일 만들기

패키지를 한 번에 사용하기 위해 roboadvisor 디렉터리에 __**main.**py 파 일을 만듦

main.py 파일을 만드는 이유는 패키지 자체를 실행하기 위함

 

5) 실행하기

모든 코드를 작성한 후 해당 패키지의 최상위 디렉터리(예시에서는 roboadvisor의 상위 디렉터리)에서 ‘python 패키지명'을 입력하여 실행함

 

-패키지 네임스페이스

:패키지 내에서 모듈을 서로 호출할 때 사용하는 패키지 / 모듈과 달리 패키지에서의 네임스페이스는 훨씬 더 많은 중간 단계가 있어 복잡함

절대참조 : 전체 패키지의 구조를 생각해 모듈의 경로를 모두 호출

__all__= ['analysis', 'crawling', 'database']

from roboadvisor import analysis
from roboadvisor import crawling
from roboadvisor import database

 

패키지 이름부터 시작해서 series까지 모든 경로를 입력

from 전체 패키지,서브 패키지import 모듈

상대참조: 호출하는 디렉터리를 기준으로 호출

from .series import series_test
from ..crawling.parser import parser_test