返回介绍

5.4 可调用对象

发布于 2024-02-05 21:59:47 字数 1199 浏览 0 评论 0 收藏 0

除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。如果想判断对象能否调用,可以使用内置的 callable() 函数。Python 数据模型文档列出了 7 种可调用对象。

用户定义的函数

使用 def 语句或 lambda 表达式创建。

内置函数

使用 C 语言(CPython)实现的函数,如 len 或 time.strftime。

内置方法

使用 C 语言实现的方法,如 dict.get。

方法

在类的定义体中定义的函数。

调用类时会运行类的 __new__ 方法创建一个实例,然后运行 __init__ 方法,初始化实例,最后把实例返回给调用方。因为 Python 没有 new 运算符,所以调用类相当于调用函数。(通常,调用类会创建那个类的实例,不过覆盖 __new__ 方法的话,也可能出现其他行为。19.1.3 节会见到一个例子。)

类的实例

如果类定义了 __call__ 方法,那么它的实例可以作为函数调用。参见 5.5 节。

生成器函数

使用 yield 关键字的函数或方法。调用生成器函数返回的是生成器对象。

生成器函数在很多方面与其他可调用对象不同,详情参见第 14 章。生成器函数还可以作为协程,参见第 16 章。

Python 中有各种各样可调用的类型,因此判断对象能否调用,最安全的方法是使用内置的 callable() 函数:

>>> abs, str, 13
(<built-in function abs>, <class 'str'>, 13)
>>> [callable(obj) for obj in (abs, str, 13)]
[True, True, False]

接下来说明如何把类的实例变成可调用的对象。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文