본문 바로가기

파이썬 기초편(1) - '모듈의 이해' 그리고 '수학 모듈' 이용하기 본문

Programming/python

파이썬 기초편(1) - '모듈의 이해' 그리고 '수학 모듈' 이용하기

ksoes 2022. 6. 12. 20:32

 

 

모듈을 만들어 봅시다

만들어진 또 하나의 소스파일을 가리켜 '모듈(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 타입으로 반환

추가로 알아야할 점이 있는데, 각도를 나타내는 방법에는 두 가지가 있다. 예를 들어 직각은 다음과 같이 두 가지 방법으로 표현할 수 있다.

출처: wikiHow

직각에 대한 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))

 

 

Comments