Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 abs()와 fabs()의 차이점 완벽 정리

```html

Python abs()와 fabs(), 무엇이 다를까?

두 함수 모두 숫자의 부호를 무시하고 절댓값을 반환한다는 공통점이 있습니다. 하지만 내부 동작 방식과 반환 결과에서 몇 가지 중요한 차이가 존재합니다.

1. 임포트(import) 여부

abs()는 파이썬에 기본으로 내장된 함수(built-in function)이므로, 별도의 라이브러리나 모듈을 불러올 필요 없이 즉시 사용할 수 있습니다. 반면 fabs()math 모듈에 정의되어 있기 때문에, 사용하기 전에 반드시 import math 구문으로 모듈을 가져와야 합니다.

>>> abs(-45)
45
>>> abs(110.12)
110.12
>>> import math
>>> math.fabs(-45)
45.0
>>> math.fabs(110.12)
110.12

2. 반환 타입의 차이

abs()는 입력값의 타입을 그대로 유지합니다. 정수(int)를 입력하면 정수를, 실수(float)를 입력하면 실수를 반환합니다. 반면 fabs()는 입력이 정수든 실수든 관계없이 항상 부동소수점(float) 값을 반환합니다. 위 예제에서 math.fabs(-45)의 결과가 45가 아닌 45.0으로 출력되는 이유가 바로 이것입니다.

3. 복소수 지원 여부

abs()는 복소수(complex number)도 처리할 수 있으며, 복소수의 크기(magnitude)를 반환합니다. 예를 들어 abs(3+4j)5.0을 반환합니다. 반면 fabs()는 복소수를 지원하지 않으므로, 복소수를 입력하면 TypeError가 발생합니다.

정리: 어떤 함수를 사용해야 할까?

- 간단한 절댓값 계산이나 복소수까지 다뤄야 한다면 → abs()
- 수학 연산에서 항상 float 타입의 절댓값이 필요하다면 → math.fabs()

대부분의 일반적인 상황에서는 별도의 임포트 없이 사용할 수 있는 내장 함수 abs()로 충분하며, NumPy 배열 등 수치 연산 라이브러리와 함께 작업할 때는 해당 라이브러리의 절댓값 함수를 활용하는 것이 효율적입니다.