c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python内置函数callable

更新时间:2023-06-15

什么是callable()函数?

Python内置函数callable()是用于判断一个对象是否是可调用的。可调用对象包括函数、方法、类和实现了__call__()方法的对象。

例如,以下是几个可调用对象的示例:

  1. 函数:
  2. def foo():

    print("Hello, callable function!")

    callable(foo) # True

  3. 方法:
  4. class MyClass:

    def __init__(self, x):

    self.x = x

    def print_x(self):

    print(self.x)

    obj = MyClass(42)

    callable(obj.print_x) # True

  5. 实现了__call__()方法的对象:
  6. class MyCallable:

    def __call__(self):

    print("Hello, callable instance!")

    obj = MyCallable()

    callable(obj) # True

callable()函数的使用方法

callable()函数接受一个参数,并返回一个布尔值。如果传入的对象是可调用的,则返回True;否则返回False。

以下是使用callable()函数判断对象是否可调用的示例:

  1. 函数:
  2. def foo():

    print("Hello, callable function!")

    print(callable(foo)) # True

  3. 方法:
  4. class MyClass:

    def __init__(self, x):

    self.x = x

    def print_x(self):

    print(self.x)

    obj = MyClass(42)

    print(callable(obj.print_x)) # True

  5. 实现了__call__()方法的对象:
  6. class MyCallable:

    def __call__(self):

    print("Hello, callable instance!")

    obj = MyCallable()

    print(callable(obj)) # True

  7. 不可调用的对象:
  8. x = 42

    print(callable(x)) # False

callable()函数的注意事项

需要注意的是,当判断一个对象是否可调用时,必须传入该对象本身,而不是传入对象的结果。

以下示例展示了将函数调用结果传给callable()函数与将函数本身传给callable()函数的区别:

  1. 将函数本身传给callable()函数:
  2. def foo():

    print("Hello, callable function!")

    print(callable(foo)) # True

    print(callable(foo())) # TypeError: 'NoneType' object is not callable

  3. 将函数调用结果传给callable()函数:
  4. def bar():

    print("Hello, non-callable function!")

    foo = bar()

    print(callable(foo)) # False