파이썬 기초편(1) - '모듈의 이해' 그리고 '수학 모듈' 이용하기 본문
● 모듈을 만들어 봅시다
만들어진 또 하나의 소스파일을 가리켜 '모듈(module)'이라 한다. 참고로 '모듈'이라 하면 이렇게 필요할 때 가져다 쓸 수 있는, 또는 다른 프로그램의 일부가 될 수 있는 내용을 담고 있는 파일을 의미. 보편적으로 파이썬의 모든 소스파일을 그냥 '모듈'이라 부르는 경우도 많다.
● 모듈을 가져다 쓰는 방법1
# circle_test1.py
import circle # circle.py 모듈을 가져다 쓰겠다는 선언!!!
def main():
r = float(input("반지름 입력 : "))
ar = circle.ar_circle(r) # circle.py의 ar_circle 함수 호출 방법
ci = circle.ci_circle(r) # circle.py의 ci_circle 함수 호출 방법
print("넓이:", ar)
print("둘레:", ci)
main()
모듈 circle.py를 가져다 쓰려면 circle_test1과 circle.py를 같은 위치(폴더)에 저장된 상태여야 한다. import circle 선언을 해야 circle.py에 저장되어 있는 함수를 호출할 수 있다. 함수를 사용할 때도 '~에 존재하는 함수를 호출한다'라는 식으로 문장을 구성해야 한다.
그런데 모듈에 존재하는 모든 함수가 아닌 특정 함수 하나만 가져다 쓰겠다고 선언하는 방법도 있다.
# circle_test2.py
from circle import ar_circle # circle.py에서 ar_circle 함수를 가져다 쓰겠다
from circle import ci_circle # circle.py에서 ci_circle 함수를 가져다 쓰겠다
''' 이렇게 호출할 수 도 있다
from circle import ar_circle, ci_circle
'''
def main():
r = int(inpu())
ar = ar_circle(r) # circle.py의 ar_circle 함수 호출, 함수 이름만으로 호출 가능
ci = ci_circle(r) # circle.py의 ci_circle 함수 호출, 함수 이름만으로 호출 가능
print(ar, ci)
main()
위와 같이 함수 단위로 선언을 하면, 모듈 이름 없이 함수의 이름만으로 호출이 가능하다는 특징을 갖고 있다.
● 모듈을 가져다 쓰는 방법2
# circle_simple2.py
from circle import ar_circle, circle # circle.py의 ar_circle, ci_circle을 가져다 쓴다고 선언한다.
# circle_simple2.py에 함수 ar_circle, ci_circle을 선언한다
def ar_circle(rad):
~
def ci_circle(rad):
~
def main():
r = int(input())
ar_circle(r) # 실행 중간 오류가 발생한다.
ci_circle(r) # 사용하려는 함수가 circle의 것인지 circle_simple2의 것인지 알 수 없기 때문이다!
~
main()
선언한 함수와 가져다 쓰려는 함수의 이름이 똑같을 때는 두 함수의 이름이 구분이 되지 않아서 문제가 된다. 이럴때는 as(alias) 함수에 별칭을 줘서 이름을 바꾸어서 사용한다.
from circle import ar_circle as ac
form circle import ci_circle as cc
def ar_circle():
def ci_circle():
def main():
ac(r) # circle 모듈의 ar_circle 함수를 사용
cc(r) # circle 모듈의 ci_circle 함수를 사용
ar_circle(r) # circle_simple2 모듈의 ar_circle 함수를 사용
ci_circle(r) # circle_simple2 모듈의 ci_circle 함수를 사용
main()
● as로 모듈의 이름 줄이기
as는 가져다 쓸 모듈의 이름을 바꿀 때에도 사용할 수 있다
# circle_test1.py
import circle as cc # circle.py 모듈을 cc라는 이름으로 가져다 쓰겠다 선언!!
def main():
r = float(input())
ar = cc.ar_circle(r) # cc라는 이름으로 circle.py의 함수를 호출한다
~
● 수학 관련 모듈
파이썬에는 '빌트인 함수(built-in function)' 라는 것이 있는데, 이는 파이썬을 설치하면 기본적으로 제공되는 함수를 뜻한다. 예를 들어 print 함수도 빌트인 함수 중 하나다.
"import 선언 없이 그냥 언제든 호출 가능한 함수를 가리켜 '빌트인 함수'라고 한다"
프롬프트 상에서 빌트인 함수의 이름을 말하면, 그 함수가 빌트인 함수라고 프롬프트가 말해준다.
그러나 '빌트인 모듈' 이라는 것도 있다. 파이썬이 기본적으로 제공하는 모듈(파이썬 파일)을 뜻한다. 따라서 빌트인 모듈은 모듈의 저장 위치를 신경쓰지 않고 언제 어디서든 import 선언을 해서 그 안에 있는 함수들을 호출할 수 있다.
예시로 다음 빌트인 모듈을 가져다 써보자
'''
모듈 이름 : math
모듈 기능 : 수학 관련 함수들로 채워져 있으며 그 수가 40개가 넘는다
'''
# 아래처럼 math.함수이름 으로 사용해야 하지만 편의상 생략하겠다
math.pi # π
e # e
sin(x) # sin x
cos(x) # con x
tan(x) # tan x
asic(x) # arcsin x, 삼각함수의 역함수 - sin x의 역함수
acos(x) # arccos x
atan(x) # arcan x
log(x) # ln x
log10(x) # log10 x
log2(x) # log2 x
exp(x) # e^x
sqrt(x) # {\sqrt x}
fabs(x) # |x|
degrees(x) # convert radians to degrees
radians(x) # convert degrees to radians
절댓값을 계산해서 반환하는 fabs 함수의 호출 예
import math # math 모듈을 가져다 쓰겠다는 선언
math.fabs(-10) # math 모듈의 fabs 함수 호출
# 결과: 10.0 # float 타입으로 반환
추가로 알아야할 점이 있는데, 각도를 나타내는 방법에는 두 가지가 있다. 예를 들어 직각은 다음과 같이 두 가지 방법으로 표현할 수 있다.
직각에 대한 degree 표현 90°
직각에 대한 radian 표현 π/2
위에서 보인 함수들 중에서 삼각법과 관련된 모든 함수들에는 인자로 radian 단위의 값을 전달해야 한다. 따라서 45°에 대한 값들을 알고 싶다면 (1).함수에 radian값을 바로 전달하거나(45°는 π/4이다), (2).radian 함수를 이용해서 값을 바꿔서 전달해야 한다.
(1)
import math
math.sin(math.pi/4) # math.py는 π, 그리고 π는 radian 단위의 값
math.cos(math.pi/4)
math.tan(math.pi/4)
(2)
import math
math.sin(math.radians(45)) # 45를 radian 단위로 바꿔서 sin 함수의 인자로 전달
math.cos(math.radians(45))
math.tab(math.radians(45))
'Programming > python' 카테고리의 다른 글
파이썬 기초편(1) - 클래스와 객체 (0) | 2022.06.14 |
---|---|
파이썬 기초편(1) - 딕셔너리(Dictionary) (0) | 2022.06.14 |
파이썬 기초편(1) - 튜플(tuple)과 레인지(range) (0) | 2022.06.10 |
파이썬 기초편(1) - 리스트 (0) | 2022.06.07 |
파이썬 기초편(1) (0) | 2022.05.19 |