Python/Fundamentals

Module & Package

metamong 2022. 3. 19.

1. Module

[1] 필요성 및 정의

* 코드가 당연히 길어지는 상황에서 모든 함수, 변수를 구현하는 것은 불가능하다. 따라서 누군가 만들어놓은 함수, 변수 등을 활용해야 한다

 

* 모듈 = 특정 목적을 가진 함수, 자료의 모임

- 모듈 자체가 python file일 수 있다. 외부 python file을 가져오기 위해 'import 파일명' 사용

[2] 모듈 사용하기

* import(불러오다) keyword를 이용해서 모듈을 사용한다

 

import random
# call random module

 

* module 속 사용하려는 함수/변수의 사용법을 미리 확인해야 한다 > docu() 훑어보기 기본 <

 

* 즉, .(dot)을 쓴 후에 module 속 함수/변수를 사용한다 (점 표기법 - dot notation)

 

import random

print(random.randrange(0,2))
# print random number between 0 and 2

[3] 모듈 만들기

* 우리가 원하는 내용이 담긴 module을 제작할 수도 있다

- .py(python file)로 만들 수 있다

 

(예 - cal.py에서 plus 함수 생성)

 

#cal.py

def plus(a,b):
	c = a +b
	return c

 

(예 - 다른 파일, 즉 main.py에서 만들어 둔 py 파일을 불러올 수 있으며, 불러온 module 속 함수, 변수까지 활용 가능하다)

 

#main.py
import cal
print(cal.plus(3,4)) #7

* built-in module

→ python에서 기본적으로 제공하는 module (따로 설치 없이 직접 module 내부의 모든 기능들을 사용할 수 있음)

2. Package

[1] 개요

* package = module을 폴더(directory)로 구분하여 관리하는 것; 코드의 묶음

- 다양한 오픈소스들이 모두 패키지로 관리

 

* 패키지가 필요한 이유는 '모듈을 편리하게 관리하기 위해서'이다

 

* 내부 package는 이미 설치되어 있는 package

* 외부 package는 따로 설치해야 하는 package

[2] 사용

* 예를 들어 user라는 folder에 cal이라는 module이 있고 해당 module 안의 함수 plus()를 불러오기 위해서

 

 

(1) import를 이용해서 폴더를 불러온 후, 함수를 실행할 수 있다. (dot notation 필요)

 

import user.cal

print(cal.plus(3,4))

 

(2) 또는 from-import를 사용할 수 있다 (함수/변수 사용 시 .를 써주지 않아도 된다)

- 메모리 절약을 위해 일부 함수 또는 class만 가져올 수 있다.

 

from user.cal import plus

print(plus(3,4)) #no need to write cal.plus()

 

- 단, dot notation을 사용하지 않기에 function name의 중복이 발생하지 않게 해야 한다!

[3] 예제

* web page 구성 확인하기

- python에서는 쉽게 web page의 정보를 가져올 수 있는 urllib package를 제공한다. 해당 package 중 request라는 module내의 urlopen함수를 사용하면 해당 url의 html 파일을 가져온다.

- 해당 함수를 통해 홈페이지의 정보를 가져올 수 있다.

- 정확히 html의 형태로 출력하기 위해서는 urlopen의 read()함수로 읽은 다음, 읽은 결과를 utf-8으로 decoding해야 하기에 decode(encoding='UTF-8')하여 출력해야 한다.

 

from urllib.request import urlopen

webpage = urlopen("https://en.wikipedia.org/wiki/Lorem_ipsum").read().decode(encoding='UTF-8')

print(webpage)

 

- 실행 결과 웹 page가 html 형태로 나온다!


*출처) 2021 NIPA/AI 기본/응용 교육과정

'Python > Fundamentals' 카테고리의 다른 글

시계열 데이터 - datetime  (0) 2022.03.24
list comprehension  (0) 2022.03.20
python intro. (03)  (0) 2022.03.19
python intro. (02)  (0) 2022.03.18
python intro. (01)  (0) 2022.03.18

댓글