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。



全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.