Python 中的 Callable 是什么
Posted on Wed, 25 Dec 2024 16:11:15 +0800 by LiangMingJian
Python 中的 Callable 是什么
什么是 Callable
Callable 是指一个支持传入参数,同时可被调用执行的对象。换一个说法就是,只要可以在一个对象的后面使用小括号来执行代码,那么这个对象就是一个 Callable 对象。
Python 中的 Callable 对象包括:函数,类,类里的函数,以及实现了 __call__
方法的实例对象。
函数
函数是 python 里的一等公民,函数是可调用对象,使用 Callable 函数可以证明这一点。
def test():
print('ok')
print(callable(test)) # True
test() # ok
类
在其他编程语言里,类与函数可以说是两个完全不搭的东西,但在 python 里,都是可调用对象。
class Stu(object):
def __init__(self, name):
self.name = name
print(callable(Stu)) # True
print(Stu('小明').name) # 小明
类里的方法
类里的方法也是用 def 定义的,本质上也是函数。使用 isfunction 函数可以判断一个对象是否是函数,run 方法也是可调用对象。
from inspect import isfunction, ismethod
class Stu(object):
def __init__(self, name):
self.name = name
def run(self):
print('{name} is running'.format(name=self.name))
print(isfunction(Stu.run)) # True
stu = Stu("小明")
stu.run() # 小明 is running
实现了__call__方法的实例对象
当一个类具有 __call__
方法时,这个类就支持直接执行,而不需要实例化,比如下述代码中的 stu()
,在使用时与调用一个函数有着完全一致的体验。
class Stu(object):
def __init__(self, name):
self.name = name
def __call__(self, *args, **kwargs):
self.run()
def run(self):
print('{name} is running'.format(name=self.name))
stu = Stu('小明')
print(callable(stu)) # True
stu() # 小明 is running