可调用对象

可调用对象

除了用户定义的对象,调用运算符(即())还可以应用到其他对象上。如果想判断对象能否调用,可以使用内置的callable()函数。

Python数据模型文档列出了7种可调用对象

1.用户定义的函数

  • 使用def语句或lambda表达式创建
  1. 内置函数
    • 使用C语言(CPython)实现的函数,如len或time.strftime
  2. 内置方法
    • 使用C语言实现的方法,如dict.get
  3. 方法
    • 在类的定义体中定义的函数
    • 调用类时会运行类的__new__方法创建一个实例,然后运行__init__方法,初始化实例,然后最后把实例返回给调用方。因为Python没有new运算符,所以调用类相当于调用函数。(通常,调用类会创建那个类的实例,不过覆盖__new__方法的话,也可能会出现其他行为)
  4. 类的实例
    • 如果类定义了__call__方法,那么它的实例可以作为函数调用
  5. 生成器函数
    • 使用yield关键字的函数或方法。调用生成器函数返回的是生成器对象。生成器函数在很多方面与其他可调用对象不同。生成器函数还可以作为协程

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

abs, str, 13
(<function abs(x, /)>, str, 13)
[callable(obj) for obj in (abs, str, 13)]
[True, True, False]
posted @ 2021-12-17 21:04  里列昂遗失的记事本  阅读(54)  评论(0)    收藏  举报