Free tools Windows power users keep installed
One-click scans. No signup required.
Python’s built-in callable(obj) returns True when an object appears to support call syntax, such as obj(...), and False when it does not. A True result does not guarantee that a particular call will succeed.
How to check whether an object is callable
Pass the object as the single positional-only argument to callable():
As an Amazon Associate I earn from qualifying purchases.
callable(object, /)
Functions and classes are callable. An instance is callable if its class defines __call__(). This example shows the difference:
def greet(name):
return f"Hello, {name}"
class Greeter:
def __call__(self, name):
return f"Hello, {name}"
class User:
pass
print(callable(greet)) # True: function
print(callable(Greeter)) # True: class
print(callable(Greeter())) # True: instance defines __call__
print(callable(User())) # False: no __call__ method
A class is callable because calling it creates an instance. An instance is callable when its class supplies __call__(). See Python’s built-in function documentation.
#1 Best Overall
Why callable() can return True even when a call fails
callable() checks whether an object appears callable; it does not check whether a particular argument list is valid or whether execution will complete successfully. For example, callable(greet) is True, but greet() raises an error because the function requires a name argument. A call may also fail because of the function’s behavior at runtime.
Use callable(obj) as a quick predicate, not as a guarantee that obj(*args, **kwargs) will work. Attempting the actual call checks that particular invocation, but it may execute code and raise an exception.
Rank #2
callable() versus Callable type annotations
callable(obj) is a runtime check. collections.abc.Callable is used in type annotations to describe callable parameters and return types. When a callable’s signature is complex, a Protocol that defines __call__() can express it more precisely. See Python’s typing documentation.
Python version notes
callable() was removed in Python 3.0 and restored in Python 3.2, so that historical change does not affect current versions. The current Python 3.14 documentation lists its signature as callable(object, /). Python 3.12 documentation also notes that static methods became callable as regular functions in Python 3.10. See the built-in function documentation and Python 3.12 documentation.
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




