Python 内置函数:callable()

B站影视 内地电影 2025-09-05 13:58 1

摘要:在 Python 中,并不是所有对象都能像函数那样“被调用”。内置函数 callable 就是用来判断一个对象是否可调用的工具。它在动态编程、反射、插件机制中非常实用,能帮助我们在运行时安全地确定某个对象是否支持以函数方式执行。

在 Python 中,并不是所有对象都能像函数那样“被调用”。内置函数 callable 就是用来判断一个对象是否可调用的工具。它在动态编程、反射、插件机制中非常实用,能帮助我们在运行时安全地确定某个对象是否支持以函数方式执行。

一、函数语法

callable(object)

参数:

object:任意 Python 对象。

返回值:

True:表示对象可调用。即可以使用 object 的形式调用。

False:表示对象不可调用。

二、基础用法示例

1、判断函数和类

def func: return "hello"class MyClass:passprint(callable(func)) # True(函数可调用)print(callable(MyClass)) # True(类本身可调用)

2、判断实例对象

class MyClass:passobj = MyClassprint(callable(obj)) # False(普通实例不可调用)

3、实现 __call__ 的对象

class Functor:def __call__(self):return "I am callable!"f = Functorprint(callable(f)) # True(实例可调用)print(f) # I am callable!

三、对象的可调用性

1、哪些对象是可调用的?

(1)函数(包括用户自定义函数和内置函数)。

(2)类(调用类会生成实例)。

(3)方法(实例方法、类方法、静态方法)。

(4)定义了 __call__ 方法的对象(俗称“可调用对象”)。

2、哪些对象不可调用?

(1)普通实例(除非实现 __call__)。

(2)字符串、列表、字典、整数等常见数据类型。

四、进阶技巧

1、与高阶函数配合使用

在回调函数机制中,可先用 callable 检查参数。

def run(func):if callable(func):print(func)else:print("参数不可调用")run(lambda: "ok") # okrun(123) # 参数不可调用

2、结合反射或动态加载使用

import mathattr = getattr(math, "sqrt")if callable(attr):print(attr(16)) # 4.0

五、补充说明

1、类对象总是可调用的,因为调用类时会触发 __new__ 和 __init__ 方法。

2、实例对象是否可调用,取决于是否实现了 __call__ 方法。

3、函数对象(functor)既能保存内部状态,又能像函数一样使用,适合用于回调、懒加载、装饰器等场景。

4、callable 只判断对象是否具备调用能力,但并不会实际调用对象本身。即使对象可调用,调用时仍可能因参数错误等原因抛出异常。

小结

callable 是判断对象能否以“函数方式”调用的工具函数。它返回布尔值,不会真正执行调用。常见可调用对象包括函数、类、方法以及实现了 __call__ 的实例。在动态编程和框架开发中,callable 能提高代码健壮性,避免误调用出错。

“点赞有美意,赞赏是鼓励”

来源:志天教育

相关推荐