Python callable() 语法
callable() 是 Python 的一个内置函数,它用于判断给定对象是否是可调用的(也就是能否通过括号运算符执行)。
语法:
callable(object)说明:
callable() 函数接收单个参数。
object(必选):任意 Python 对象(不限于可迭代对象)。
callable() 函数返回一个布尔值,即 True 或 False。如果对象是可调用的,则返回 True;如果对象是不可调用的,则返回 False。
在 Python 中,常见的可调用对象包括:
- 函数(包括内置函数、用户定义函数、lambda 表达式)。
- 方法(包括实例方法、类方法、静态方法)。
- 类(调用类会创建该类的一个新实例)。
- 实现了 __call__() 特殊方法的类的实例(这些实例被称为 “可调用对象” 或 “仿函数”)。
提示: 如果一个对象定义了 __call__() 方法,则被认为是可调用的。
Python callable() 摘要
| 使用频率 | 中 |
|---|---|
| 官方文档 | 查看 |
Python callable() 示例
接下来,我们通过几个简单的例子来讲解一下 Python callable() 函数是如何使用的。
示例 1:callable() 基本用法
colors = ['red', 'green', 'blue']
print(callable(colors))
print(callable(list))运行结果如下。
False
True分析:
colors 是一个列表,你可以将其看成是 list 的实例。从结果可以看出,list 的实例是不可调用的,但 list 这个类是可调用的。
示例 2:callable() 用于自定义类
# 定义类
class Rect():
def __init__(self, width, height):
self.width = width
self.height = height
# 实例化
r = Rect(20, 10)
print(callable(r))
print(callable(Rect))运行结果如下。
False
True分析:
Rect 是一个类,而 r 是类的实例。默认情况下,对于一个类来说,它本身是可调用的,但它的实例却是不可调用的。
示例 3:实现 __call__() 方法的类
# 定义类
class Rect():
def __init__(self, width, height):
self.width = width
self.height = height
def __call__(self):
pass
# 实例化
r = Rect(20, 10)
print(callable(r))
print(callable(Rect))运行结果如下。
True
True分析:
如果一个类内部定义了 __call__() 方法,那么除了它本身是可调用之外,它的实例也是可调用的。
示例 4:callable() 检测 “函数” 与 “方法”
# 定义函数
def greeting(name):
return f'Hello {name}'
# 定义类和方法
class MyObject:
def method(self):
pass
print(callable(greeting)) # True(函数可调用)
print(callable(MyObject.method)) # True(未绑定方法)
print(callable(MyObject().method)) # True(绑定方法)
print(callable(lambda x: x**2)) # True(lambda 表达式)运行结果如下。
True
True
True
True示例 5:callable() 检测特殊值
import math
print(callable(math.pi)) # False(常量不可调用)
print(callable(math.sqrt)) # True(函数可调用)
print(callable(ValueError)) # True(异常类可调用)
print(callable((lambda: None))) # True(匿名函数)运行结果如下。
False
True
True
True