callable()函数的用法参数和返回值,注意什么是可调用
callable()函数
callable()函数是python的一个内置函数,用来查询参数对象是否可以调用,返回值为bool类型的值。如果返回True,那么object仍然有可能会调用失败,但是如果返回的是False,那该参数对象一般是不会调用成功的。
提示:使用callable()函数之前,应该先认识一下什么叫做“可调用”,在python当中,调用一般是在对象名称的后面加"()",因此,一般可以理解为可以加()的表示可调用的,否则为不可调用的。了解这一点对理解callable()函数的用法还是有所帮助的,具体的可以看下下方的实例。
callable()函数语法
callable ( object )
callable()函数的参数类型
object——python对象
callable()函数实例代码
>>> callable(list) #list可以是类list,也可以是list()函数
True
>>> callable(1) #参数为int类型对象
False
>>> callable('which')
False
>>> callable(str)
True
>>> def test(): #
... pass
...
>>> callable(test)
True
>>> class X():
... pass
... >>> callable(X)
True
>>> x = X()
>>> callable(x)
False
>>> class Y():
... def __call__(self):
... pass
...
>>> callable(Y)
True
>>> y=Y()
>>> callable(y)
True
>>> callable(lambda z : z*z)
True
>>> y()
>>> x()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'X' object is not callable
代码解析
- list作为类list时,可以用“()”来调用,进行类的实例化,创建list列表,作为函数时,也可以用“()”来进行调用,所以callable( list )返回True;
- 参数为1或“which”时,二者无法通过“()”进行调用,因此返回False;
- 自定义的函数test和类X及Y,都可以被调用,callable()返回True;
- 但是类的实例x为实现__call__方法,无法被调用,就像1和“which”一样,当类Y实现了__call__方法,Y的实例的callable()返回True;之后,又分别使用“()”来对类X和Y的实例进行调用,可以发现,实现了__call__方法的y实例调用时python不会抛出TypeError,而为实现__call__的X的实例x调用之后python抛出TypeError的异常;
- lambda匿名函数的表达式,通过callable()返回的也是True;
总结
综上所述,当callable()函数的参数为函数、方法、lambda表达式、类,以及实现了__call__方法的类的相关实例的时候,返回值一般为True。