当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python callable()用法及代码示例


通常,可调用是可以调用的东西。如果传递的对象看起来是可调用的,但可能不是,则此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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。