首页 > 开发 > Python > 正文

Python callable()函数

2023-04-24 19:21:36
字体:
来源:转载
供稿:网友

callable()函数是Python的一个内置函数。该函数判断一个对象是否可被调用,如果传递给该函数的对象可被调用,则返回True,否则返回False。在实际中,即使该函数返回True,也有可能在调用该对象时会失败,当然,若该函数返回的是False,在调用该对象时绝对不会成功。

在Python类中如果定义了__call__()方法,则该类的实例是可调用的。

通俗地讲,一般情况下用户定义的方法/函数是可以调用的,但类的实例一般不能按照方法/函数的形式来调用,但如果类的内部实现了__call__()方法,则该类的实例可以按照方法/函数的形式来调用。

注意:callable()函数在Python 3.0版本中被移除,又再3.2版本中重新添加了回来。

callable()函数语法格式

callable(object)

参数

object:要判断的对象或实例。

返回值

该函数的返回值是一个布尔值:TrueFalse.

Python callable()函数

下面使用几个实例来讲解callable()方法的具体使用方法。

1、返回值为True的情况

#函数
def fun():
    print("调用fun()函数")

#创建一个对象
fun1 = fun

class test:
    def __call__(self, *args, **kwargs):
        print("定义了__call__()方法")

#创建类的实例
test_obj = test()

print("fun is callable?",callable(fun))
print("fun1 is callable? ",callable(fun1))
print("test is callable? ",callable(test))
print("test_obj is callable? ",callable(test_obj))

#调用试试
fun()
fun1()
test()
test_obj()

输出结果:

fun is callable? True
fun1 is callable? True
test is callable? True
test_obj is callable? True
调用fun()函数
调用fun()函数
定义了__call__()方法

在上面的例子中,我们首先定义了一个函数fun(),然后定义了fun()函数的一个引用对象fun1;其次定义了一个类Test和类的一个实例test_obj,在类Test中实现了__call__()函数;最后测试函数fun()、函数的引用fun1、类和类的对象test_obj的可调用性。从结果可以看出四个对象的callable()函数返回值都是True,并且调用都获得了成功。

一般情况,在对象的可访问范围内,类和方法/函数本身总是可以调用的,但类的实例在未定义__call__()函数时则不能被调用。

2、返回值为False的情况

下面的例子演示了callable()函数返回False的几种情况:

n = 123
s = 'VeVb.com'
lst = ['R', 'Python', 'SPSS']
t = ('优雅的代码订阅号','武林网')
d ={'K1':'V1','K2':'V2'}

class Student:
    sid = 0
    def __init__(self,sid):
        self.sid = sid

stu = Student('001')

print("n is callable?", callable(n))
print("s is callable?", callable(s))
print('列表对象可调用?', callable(lst))
print('元组对象可调用?', callable(t))
print('字典对象可调用?', callable(d))
print('stu is callable?', callable(stu))

输出结果如下:

n is callable? False
s is callable? False
列表对象可调用? False
元组对象可调用? False
字典对象可调用? False
stu is callable? False

从上面的例子中可以得出:数值变量、列表对象、元组对象、字典对象等是不可调用的,这显而易见,且这种调用也没有实际意义的;类中未实现__call__()方法,类的实例也是不能调用的。

总结

callable()方法主要在程序中调用某个对象时而预防出错设置的函数。用户在调用某个对象前,预先使用callable()方法判断其可调用性而避免出现TypeError错误。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表