Python中有七种可调用对象,可调用对象可使用内置函数callable来检测
一、用户自定义的函数:
使用def语句或者lambda表达式创建的函数。
二、内置函数:
使用C语言实现的函数,如len、sum或者time.strftime
三、内置方法:
使用C语言实现的方法,如dict.get()
四、类方法:
在类的定义体中定义的函数
五、类:
在调用类时会运行类的__new__方法创建一个实例,然后运行__init__方法,初始化实例,最后把实例返回给调用方。Python中没有new运算符,所以调用类相当于调用函数。
六、类的实例:
如果类定义了__call__方法,那么它的实例可以作为函数进行调用。并且__call__方法可以进行自定义重写。
import random class BingoCage(object): def __init__(self,items): self._items=list(items) random.shuffle(self._items) def pick(self): try: return self._items.pop() except IndexError: raise LookupError('pick from empty BingoCage') def __call__(self): return self.pick()
七、生成器函数:
使用yield关键字的函数或方法。调用生成器函数返回的是生成器对象。