📜  Python中的可调用()

📅  最后修改于: 2022-05-13 01:54:56.309000             🧑  作者: Mango

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