📌  相关文章
📜  检查变量是否是函数python(1)

📅  最后修改于: 2023-12-03 15:40:33.042000             🧑  作者: Mango

检查变量是否是函数 Python

在 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_functionMyClass 都是可调用的对象,因此 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() 函数。