# callable() function in Python

## Introduction

The `callable()` method returns True if the object passed to it appears to be callable, else it returns False. Callable means something that can be called.

The syntax of `callable()` method is:

```python
callable(object)
```

The `callable()` method takes a single parameter object and can return one of the two possible values:

*   **True** if the object appears to be callable
*   **False** if the object doesn't appear to be callable

**Note:** In some cases, `callable()` returns True, but the call to the object can still fail. However, if the `callable()` method returns False, the call to the object will definitely fail.

## Example 1

```python
def my_func():
    print("I am a function, I can be called!")


func = my_func
print(callable(func))

my_var = 20
print(callable(my_var))

```

Output:

```bash
True
False
```

In the first case, an object `func` of the `my_func` function is created and passed to the `callable()` method which appears to be callable. Hence it returns True. However, in the second case, an object `my_var` is passed which is definitely not callable. Hence, it returns False.

## Example 2

The callable() method checks if the argument is either of the following:

1.  an instance of class with a **call** method
2.  of a type that indicates callability such as method or function

```python
class TestClass1:
    def __call__(self):
        print("Test Class 1 called")

obj1 = TestClass1()
print(callable(obj1))
obj1()
```

Output:

```bash
True
Test Class 1 called
```

In the above example, the `TestClass1` has `__call__` method implemented, and hence appears to be callable, and is callable.

```python
class TestClass2:
    def my_method(self):
        print("Test Class 2 called")

obj2 = TestClass2()
print(callable(obj2))
obj2()
```

Output:

```bash
False
Traceback (most recent call last):
  File "D:\Quarantine\Test\Blog-Codes\Built-Ins\callable\ex2.py", line 17, in <module>
    obj2()
TypeError: 'TestClass2' object is not callable
```

However, in the above example, the `TestClass2` appears to be callable, but the instance of the class is not callable, and hence an error is thrown.

## Conclusion

In this part, we learned about the Python `callable()` function with the help of examples.
