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 |
댓글