📅  最后修改于: 2023-12-03 15:40:33.042000             🧑  作者: Mango
在 Python 中,我们可以使用 callable()
函数来检查一个变量是否是可调用的(callable),即是否是函数、方法、类等可以被调用执行的对象。下面是一些示例代码:
def my_function():
pass
class MyClass:
pass
my_var = 42
print(callable(my_function)) # True
print(callable(MyClass)) # True
print(callable(my_var)) # False
在这个例子中,my_function
和 MyClass
都是可调用的对象,因此 callable()
返回 True
。相反,my_var
是一个整数,不是可调用的对象,因此 callable()
返回 False
。
需要注意的是,即使变量是一个函数,也必须使用函数名而不是函数调用来调用 callable()
函数,否则会引发 TypeError
异常:
def my_function():
pass
print(callable(my_function())) # TypeError: 'bool' object is not callable
所以,正确的方式是这样的:
def my_function():
pass
print(callable(my_function)) # True
除了使用 callable()
函数之外,我们还可以使用 inspect
模块中的 isfunction()
函数,该函数专门用于检查一个对象是否是函数。
import inspect
def my_function():
pass
class MyClass:
pass
my_var = 42
print(inspect.isfunction(my_function)) # True
print(inspect.isfunction(MyClass)) # False
print(inspect.isfunction(my_var)) # False
和 callable()
函数类似,isfunction()
函数也可以用于检查方法是否是函数:
import inspect
class MyClass:
def my_method(self):
pass
print(inspect.isfunction(MyClass.my_method)) # False
print(callable(MyClass.my_method)) # True
总结:
callable()
函数。inspect.isfunction()
函数。callable()
或 inspect.isfunction()
函数。