본 포스팅은 elice의 2021 NIPA AI 온라인 교육을 듣고 개인 공부를 위해 정리한 것입니다.
코드의 길이가 길어지는 상황에서 모든 함수, 변수를 구현하는 것을 불가능
→ 누군가 만들어놓은 함수, 변수 등을 활용하는 것이 효과적!
특정 목적을 가진 함수, 자료의 모임
라면 레시피라는 모듈이 있다고 하자. 이 모듈 안에는 라면을 끓이기 위해 필요한 여러 정보가 들어 있다. ku_ramen()
, sok_ramen()
은 함수가 된다. 각 함수에 필요한 자료, 5(스프의 양), 550(물의 양)을 넣어주면 쿠지라이식 라면이 출력되어 나오는 것이다! ku_ramen(5, 550)
이렇게 함수와 함수에 필요한 자료들이 레고 블럭처럼 준비되어 있는 것을 모듈이라고 한다.
모듈을 사용하기 위해서는 우선 모듈을 불러와야 한다.
import(불러오다) 키워드를 이용해서 모듈 사용
import random # random 모듈 불러오기
모듈 속 사용하려는 함수/변수의 사용법 확인
random.randrange(start, stop, step)
: range(start,stop)중의 한 원소를 가지고 온다.
여기서 random은 모듈, randrange는 함수다.
.
(dot)을 쓴 후에 모듈 속 함수/변수 사용 (모듈.함수)
.
연산자를 이용하여 모듈의 함수로 접근하는 것을 점표기법(Dot Notation)이라고 한다
import random
print(random.randrange(0,2)) # 0이상 2미만 수 중 임의로 출력
우리가 원하는 내용이 담긴 모듈이 없다면 제작도 가능하다.
.py
(파이썬 파일)로 만들 수 있다.
import my_module
# cal.py
def plus(a, b):
c = a + b
return c
# main.py
import cal
# main.py
import cal
print(cal.plus(3, 4))
# cal.py
def plus(a, b):
return a + b
def minus(a, b):
return a - b
modelName = 'ELI-C2'
# main.py
import cal
var1 = cal.modelName
var2 = cal.plus(3, 4)
var3 = cal.minus(7, 2)
print(var1, var2, var3)
>>> ELI-C2 7 5
모듈을 폴더(Directory)로 구분하여 관리하는 것
project/
script/
sound/
audio/
...
❔ 왜 패키지가 필요할까?🙄
모듈을 편리하게 관리하기 위해서!
❔ 다음과 같이 모듈이 있을 때, 이를 사용하는 방법은?
user(폴더) - cal(모듈) - plus(함수)
☝ 방법 1
import을 이용해서 폴더를 불러온 후, 함수 진행
import user.cal # 폴더.모듈
print(cal.plus(3, 4)) # 모듈.함수
☝ 방법 2
from-import 사용
함수/변수 사용시 .를 써주지 않아도 된다.
from user.cal import plus # user폴더 안의 cal모듈러부터 plus함수를 불러온다.
print(plus(3, 4))
이 경우 충돌이 일어날 수 있으므로 주의!
예를 들어 main.py에도 plus 함수가 있고, cal.py에도 plus 함수가 있다면 컴퓨터는 plus 함수가 어디에서 오는지 모른다😢
from random import randrange
import math
var1 = randrange(1, 11)
var2 = math.log(5184, 72)
print(var1, var2)
>>>2 2.0
random.randrange(x, y)
함수는 x부터 y-1까지의 숫자에서 임의의 숫자를 하나 반환math.log(a, b)
: a는 진수, b는 밑 즉 logbaPython에서는 쉽게 웹페이지의 정보를 가져올 수 있는 urllib패키지를 제공한다.
이 패키지 안의urllib.request.urlopen
함수는 해당 url의 html 파일을 가져온다.
위 함수를 이용해서 https://en.wikipedia.org/wiki/Lorem_ipsum 홈페이지의 정보 가져오기!
from urllib.request import urlopen
webpage = urlopen("https://en.wikipedia.org/wiki/Lorem_ipsum").read().decode("utf-8")
# 문자는 꼭 따옴표를 붙여줘야 한다! url주소도, 인코딩(utf-8)도!
# 함수는 연속 사용이 가능하다.
print(webpage)
>>> ~~~~~~~ </script>
</body></html>