- 파이썬에서 여러 기능들을 모아둔 모듈이란 파일을 의미한다.
- 파일을 모듈화 시키면 한파 일에서 구현하고자하는게 명확해지고, 코드도 재사용할 수 있어 효율적이다.
- 모듈의 이름은 .py 확장자를 뺀걸로 부른다.
# 덧셈
def addition(a, b):
return a + b
# 뺄셈
def subtraction(a, b):
return a - b
# 곱셈
def multiplication(a, b):
return a * b
# 나눗셈
def division(a, b):
return (a / b)
- import 를 이용해서 import 모듈에 저장된 기능을 사용할 수 있다.
💻 run.py
# import 모듈 자체를 임포트한다. import calculator # 모듈안에 있는 변수나 함수를 호출할 때 (모듈이름). 을 사용한다. print(calculator.addition(5,3))
👀 결과
8
- from (모듈이름) import (변수명, 함수) 을 이용해서 모듈의 특정 변수나 함수만을 임포트 할 수 있다.
💻 run.py
# calculator 모듈에 있는 subtraction만 임포트 한다. from calculator import subtraction # subtraction만 임포트 하였기 때문에 함수를 호출할 때 (모듈이름).을 붙이지 않는다. print(subtraction(5,3))
👀 결과
2
- from (모듈이름) import * 을 사용해 모듈에 있는 모든것들을 임포트할 수 있다.
- 하지만 이 임포트 방식은 쓸데없이 불필요한 많은 것들을 불러올 수 있어서 파이썬 커뮤니티에서는 권장되지 않는 방식이다.
💻 run.py
# import 모듈에 있는 모든 것을 임포트한다. from calculator import * # import 함수에 있는 모든 변수나 함수들을 임포트 했기 때문에, 호출할때 (모듈이름). 을 붙이지 않는다. print(addition(5,3)) print(subtraction(5,3)) print(multiplication(5,3)) print(division(5,3))
👀 결과
8 2 15 1.6666666666666667
- as 키워드를 사용해 모듈이름,변수명, 함수명을 줄이거나 바꿔서 사용할 수 있다.
💻 run.py
# as 키워드를 이용해 calculator 를 cal로 바꿨다. import calculator as cal print(cal.addition(5,3)) # as 키워드를 이용해 subtraction 을 sub로 바꿨다. from calculator import subtraction as sub print(sub(5,3))
👀 결과
8 2
- 네임스페이스란 파일에서 정의된 모든 이름들을 뜻한다.
- dir 함수를 이용하여 모듈에 있는 네임스페이스를 검색할 수 있다.
💻 run.py
# calculator를 임포트하여 네임스페이스에 올렸다. import calculator print(dir())
👀 결과
# 맨 뒤쪽에 보면 calculator이 네임스페이스에 올라가있는걸 볼수있다.(나머진 원래 내장되있는 변수,함수들) ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'calculator']
💻 run.py
import calculator print(dir())
👀 결과
# 맨 뒤쪽에 보면 additionm, subtraction이 네임스페이스에 올라가있는걸 볼수있다.(나머진 원래 내장되있는 변수,함수들) ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'addition', 'subtraction']
- 정의된 함수나 변수 이름이 중복될 경우에는 나중에 함수나 변수 이름이 호출된다.
💻 run.py
from calculator import addition def addition(a, b): return a ** b print(addition(5,3))
👀 결과
125
- from (모듈이름) import * 는 모듈안에 있는 모든 함수나 변수의 이름들을 네임스페이스에 추가하기 때문에, 네임스페이스에 어떤 이름이 있는지 파악하기도 힘들어질 뿐만아니라 같은 이름이 중복될 확률도 높아진다.
💻 run.py
from calculator import * print(dir())
👀 결과
# 맨 마지막에보면 calculator 모듈의 모든 함수들이 호출된걸 볼 수 있다. ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'addition', 'division', 'multiplication', 'subtraction']
스탠다드 라이브러리
math 모듈
- 스탠다드 라이브러리란 개발자들이 많이 쓸법한 자료형, 내장함수, 모듈을 모아둔 곳이다.
- math 모듈은 수학관련 함수들을 담고있는 스탠다드 모듈이다.
💻 run.pyimport math # 사인 함수 print(math.sin(0)) # 코사인 함수 print(math.cos(0))
👀 결과
0.0 1.0
math 모듈
- random 모듈은 수학관련 함수들을 담고있는 스탠다드 모듈이다.
import random # 1이상 10 이하의 랜덤한 정수 print(random.randint(1,10)) # 0이상 1이하의 랜덤한 소수 print(random.uniform(0, 1))
👀 결과
5 0.9739021350129778
'import 모듈명' 할 때, 해당 모듈 파일이 같은 레벨의 디렉토리에 위치해야하나요?