通常,可调用是可以调用的东西。如果传递的对象看起来是可调用的,但可能不是,则此Python中的内置方法检查并返回True。
用法:
callable(object)
callable()方法仅接受一个参数,即一个对象,并返回两个值之一:
- 如果对象似乎可调用,则返回True。
- 如果对象不可调用,则返回False。
注意:在少数情况下,callable()返回true,但是对对象的调用失败。但是,如果情况返回False,则调用对象将永远不会成功。
案例:可调用对象时
# Python program to illustrate
# callable()
# a test function
def Geek():
return 5
# an object is created of Geek()
let = Geek
print(callable(let))
# a test variable
num = 5 * 5
print(callable(num))
输出:
True False
说明:
- 在这里,我们在第一种情况下看到在callable()方法中传递对象时,它返回True。之所以如此,是因为let是可调用函数Geek的对象(可能并非在所有情况下都如此)。
- 在第二种情况下,num绝对不是可调用对象,因此结果为False。
内置 callable()方法检查参数是否为以下两个参数之一:
- 具有__call__方法的类的实例。
- 具有指示可调用性(例如在函数,方法等中)或具有非null tp_call(c struct)成员的类型
例:
# Python program to illustrate
# callable()
class Geek:
def __call__(self):
print('Hello GeeksforGeeks')
# Suggests that the Geek class is callable
print(callable(Geek))
# This proves that class is callable
GeekObject = Geek()
GeekObject()
输出:
True Hello GeeksforGeeks
说明:由于第一种情况返回并输出True,因此表明Geek类可以被调用。之后,我们可以调用__call__方法并且可以访问它,从而证明该类是可调用的。
案例:无法调用对象时
让我们看看在这个例子中发生了什么:
# Python program to illustrate
# callable()
class Geek:
def testFunc(self):
print('Hello GeeksforGeeks')
# Suggests that the Geek class is callable
print(callable(Geek))
GeekObject = Geek()
# The object will be created but
# returns an error on calling
GeekObject()
输出:
True
说明:callable()方法返回True,表明Geek类是可调用的,但Geek的实例不是callable(),它返回运行时错误:
Traceback (most recent call last): File "/home/3979dc83032f2d29befe45b6ee6001a4.py", line 10, in GeekObject() TypeError:'Geek' object is not callable
相关用法
注:本文由纯净天空筛选整理自Chinmoy Lenka大神的英文原创作品 callable() in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。