美文网首页
Python 可调用对象

Python 可调用对象

作者: eeert2 | 来源:发表于2020-04-28 22:09 被阅读0次

当我们将函数作为参数传递时,实际传递的是一个可调用对象,我们要执行该函数对象也很简单,执行在函数对象两侧加()即可。

def say():
    print('Hello ')


def my_say(start):
    start()

    print('World!')


if __name__ == '__main__':
    my_say(say)
    # Hello 
    # World!

在上面的例子中,我们在my_say中执行了say函数。

一、Python中共有7中可调用对象。

  • 1.用户自定义的函数
    使用 def 语句或 lambda 表达式创建.
def fn():
    pass

if __name__ == '__main__':
    print(type(fn))  # <class 'function'>
  • 2.内置函数
    使用 C 语言(CPython)实现的函数,如 lentime.strftime
if __name__ == '__main__':
    print(type(max))  # <class 'builtin_function_or_method'>
  • 3.内置方法
    使用 C 语言实现的方法,如 dict.get
if __name__ == '__main__':
    print(type(dict.get))  # <class 'method_descriptor'>
  • 4.方法
    在类的定义体中定义的函数。
class Student:

    def study(self):
        print('学习,学个屁!')


if __name__ == '__main__':
    print(type(Student().study))  # <class 'method'>
  • 5.
    添加()会生产实例对象。所以类也是可调用的对象。

  • 6.类的实例
    如果类定义了 call 方法,那么它的实例可以作为函数调用。

class Student:

    def study(self):
        print('学习,学个屁!')

    def __call__(self, *args, **kwargs):
        print('执行对象调用!')


if __name__ == '__main__':
    student = Student()
    student()  # 执行对象调用!

这里如果没有实现__call__方法,则会报错

TypeError: 'Student' object is not callable
  • 7.生成器函数

二、因此判断对象能否调用

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

>>> abs, str, 13 
(<built-in function abs>, <class 'str'>, 13) 

>>> [callable(obj) for obj in (abs, str, 13)] 
[True, True, False]

相关文章

  • 魔法方法__del__

    创建对象后,python解释器默认调用__init__()方法; 当删除一个对象时,python解释器也会默认调用...

  • python-复盘-特殊方法__call__

    在Python中,函数其实是一个对象: 由于f可以被调用,所以,f 被称为可调用对象。 所有的函数都是可调用对象。...

  • 可调用对象

    我们知道在Python中,函数是一个对象。由于函数可以被调用,所以函数被称为可调用对象。所有的函数都是可调用对象。...

  • Python装饰器4-函数参数是函数名

    Python的函数参数可以是可调用对象 对于函数名就是一个可调用对象 小结 Python装饰器的语法是将被装饰的函...

  • python可调用对象

    Python中有一个有趣的语法,只要定义类型的时候,实现call函数,这个类型就成为可调用的。 换句话说,我们可以...

  • Python 可调用对象

    python也是一门面向对象的语言,所以所有的东西皆对象。那么有一种对象叫做可调用对象,这种对象实现了__call...

  • Python 可调用对象

    当我们将函数作为参数传递时,实际传递的是一个可调用对象,我们要执行该函数对象也很简单,执行在函数对象两侧加()即可...

  • Python中的类装饰器

    1,对象能不能被调用 在Python中对象一般是不可以被调用的, person=Person() ,person(...

  • 小白学 python之——读写文件

    在Python 中,读写文件有3 个步骤:1.调用open()函数,返回一个File 对象。2.调用File 对象...

  • Python装饰器12-类的__call__方法

    Python中万物皆对象,对象分为可调用和不可调用,可调用就是一个对象名称后面可以跟(),如之前所说装饰器语法糖必...

网友评论

      本文标题:Python 可调用对象

      本文链接:https://www.haomeiwen.com/subject/lediwhtx.html