Python中的可调用()
通常,可调用对象是可以调用的东西。如果传递的对象看起来是可调用的,但可能不是,则Python中的这个内置方法会检查并返回 True,否则返回 False。
句法:
callable(object)
callable() 方法只接受一个参数,一个对象并返回两个值之一:
- 如果对象看起来是可调用的,则返回 True。
- 如果对象不可调用,则返回 False。
注意:可能有少数情况 callable() 返回 true,但对 object 的调用失败。但是如果一个 case 返回 False,调用 object 永远不会成功。
案例:当对象是可调用的
# 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__方法的类的实例。
- 是一种类型,它具有指示可调用性的类型,例如在函数、方法等中,或者具有非空 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