이 글에서는 Python 3.x에서 제공하는 로그(log) 함수에 대해 자세히 알아보겠습니다. 서로 다른 밑(base)을 사용한 다양한 형태의 로그 값을 계산하는 방법과, 잘못된 입력값이 주어졌을 때 발생하는 오류 처리 방법까지 함께 살펴봅니다.
math 모듈 불러오기
Python에서 로그 계산을 하려면 먼저 표준 라이브러리의 math 모듈을 임포트해야 합니다.
>>> import math
모듈을 임포트하면 math 모듈이 제공하는 모든 수학 함수를 사용할 수 있습니다.
다양한 로그 함수 사용 예제
Python은 용도에 따라 여러 종류의 로그 함수를 제공합니다. 각 함수의 차이점을 예제를 통해 확인해 보겠습니다.
import math
# 자연로그 (밑이 e)
print("56의 자연로그 : ", math.log(56))
# 밑이 8인 로그 (두 번째 인자로 밑 지정)
print("밑이 8일 때 64의 로그 : ", math.log(64, 8))
# 밑이 2인 로그
print("밑이 2일 때 12의 로그 : ", math.log2(12))
# 밑이 10인 로그
print("밑이 10일 때 64의 로그 : ", math.log10(64))
# log(1 + x) 계산
print("log1p(4)의 값 : ", math.log1p(4))실행 결과
56의 자연로그 : 4.02535169073515 밑이 8일 때 64의 로그 : 2.0 밑이 2일 때 12의 로그 : 3.584962500721156 밑이 10일 때 64의 로그 : 1.806179973983887 log1p(4)의 값 : 1.6094379124341003
주요 로그 함수 정리
- math.log(x): x의 자연로그(ln x), 즉 밑이 e(약 2.71828)인 로그를 반환합니다.
- math.log(x, base): 두 번째 인자로 밑을 직접 지정할 수 있습니다.
- math.log2(x): 밑이 2인 로그를 반환합니다. 부동소수점 오차가 적어 정확도가 높습니다.
- math.log10(x): 밑이 10인 상용로그를 반환합니다.
- math.log1p(x): log(1 + x)의 값을 반환합니다. x가 매우 작을 때 일반적인 방식보다 정밀한 결과를 얻을 수 있습니다.
음수 입력 시 오류 처리
로그 함수에 음수나 0을 입력하면 어떻게 될까요? 수학적으로 음수의 로그는 실수 범위에서 정의되지 않기 때문에 Python은 ValueError를 발생시킵니다.
import math print(math.log(-5))
실행 결과
Traceback (most recent call last): File "<stdin>", line 2, in <module> ValueError: math domain error
이러한 오류를 방지하려면 로그 함수를 호출하기 전에 입력값이 양수인지 반드시 확인해야 합니다.
import math
value = -5
if value > 0:
print(math.log(value))
else:
print("로그는 양수에 대해서만 정의됩니다.")마무리
이번 글에서는 Python 3.x에서 사용할 수 있는 다양한 로그 함수들을 살펴보았습니다. math.log(), math.log2(), math.log10(), math.log1p() 등 상황에 맞는 함수를 선택하면 보다 정확하고 효율적인 로그 계산이 가능합니다. 또한 음수 입력 시 발생하는 ValueError를 사전에 검증하여 안정적인 코드를 작성하시기 바랍니다.