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

파이썬 callable() 함수 완벽 가이드 – 호출 가능한 객체 판별하기

파이썬의 callable() 함수는 표준 라이브러리에 포함된 내장 함수로, 전달받은 객체가 호출 가능(callable)하면 True, 그렇지 않으면 False를 반환합니다. 객체가 호출 가능하려면 해당 객체에 __call__ 메서드가 정의되어 있어야 합니다. 예를 들어 단순히 값을 담고 있는 변수는 호출할 수 없지만, 함수로 선언된 객체는 얼마든지 호출할 수 있습니다.

호출 가능한(Callable) 객체

아래 예제에서는 호출 가능한 함수를 하나 선언합니다. 실제로 함수를 호출해 보거나 callable() 함수로 검사함으로써 이를 쉽게 확인할 수 있습니다.

예제

def func_callable():
   x = 3
   y = 5
   z = x^y
   return z

# 함수 객체를 변수에 할당
res = func_callable
print(callable(res))
print(res)

# 함수를 직접 호출하여 사용
final_res = func_callable()
print(final_res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

True
6

호출 불가능한(Not Callable) 객체

이번에는 위 프로그램과 동일한 계산을 수행하지만 함수 없이 변수만 사용한 경우입니다. 계산 결과를 담은 단순 변수는 호출 가능 여부를 검사하면 False가 출력됩니다.

예제

x = 3
y = 5
z = x^y
print(callable(z))
print(z)

실행 결과

False
6

__call__ 메서드를 구현한 클래스

사용자 정의 클래스에 __call__ 메서드를 정의하면 클래스의 인스턴스도 함수처럼 호출할 수 있습니다. 아래 예제를 통해 확인해 보세요.

class Greeter:
   def __call__(self, name):
       return f"안녕하세요, {name}님!"

g = Greeter()
print(callable(g))   # True
print(g("파이썬"))    # 안녕하세요, 파이썬님!

이처럼 callable() 함수는 함수, 메서드, 클래스뿐만 아니라 __call__ 메서드를 구현한 모든 객체에 대해 True를 반환하므로, 코드 실행 전에 객체의 호출 가능 여부를 안전하게 검사하는 용도로 유용하게 활용됩니다.