如何检测 Python 变量是否为函数?

pythonserver side programmingprogramming更新于 2024/1/7 15:45:00

在本文中,我们将学习如何检测 Python 变量是否为函数。

有时,确定 Python 变量是否为函数是至关重要的。当代码长达一千行并且你不是代码的创建者时,这可能看起来没有什么价值,你可能会发现自己在质疑变量是否是函数。

使用的方法

以下是检查python变量是否为函数的方法-

  • 使用内置的callable()函数

  • 使用inspect模块的isfunction()

  • 使用type()函数

  • 使用内置的hasattr()函数

  • 使用isinstance()函数

方法1:使用内置的callable()函数

callable()函数返回一个布尔值结果。如果函数可调用,则返回 True,否则返回 False

语法

callable(object)

算法(步骤)

以下是执行所需任务需要遵循的算法/步骤。−

  • 创建任何随机函数。此处的函数返回传递给它的两个数字的加法。

  • 使用 return 关键字返回传递的两个数字的总和。

  • 使用 callable() 函数检查传递的对象(即加法)是否为函数。如果它是一个函数,则返回 True,否则返回 False。

  • 创建一个变量来存储输入的数字。

  • 同样,使用 callable() 函数检查变量 'number' 是否为函数。

示例

以下程序使用内置的 callable() 函数检查 python 变量是否为函数 −

# 创建一个函数,返回传递给它的 2 个数字的加法
def addition(p, q):
	# 返回给定两个数字(参数)的总和
      return p+q

# 使用 callable() 函数检查
# 变量 'addition' 是否为函数
# 如果是函数则返回 True,否则返回 False
print(callable(addition))
number = 10
# 检查变量 'number' 是否为函数
print(callable(number))

输出

执行时,上述程序将生成以下输出 -

True
False

方法 2:使用 inspect 模块的 isfunction()

inspect 模块的 isfunction() 函数可用于确定变量是否为函数。如果它是一个函数,则返回布尔值 True,否则返回 False。

此外,要利用此功能,您必须先从 inspect 模块导入 isfunction,然后才能使用它来获取布尔值。

示例

以下程序使用 inspect 模块的 isfunction() 函数检查 python 变量是否为函数 -

# 从 inspect 模块导入 isfunction
from inspect import isfunction

# 创建一个返回传递给它的 2 个数字的加法的函数
def addition(p, q):
    # 返回给定两个数字(参数)的总和
      return p+q
 
# 使用 isfunction() 函数检查
# 变量 'addition' 是否为函数
# 如果是函数则返回 True,否则返回 False
print(isfunction(addition))
number = 10

print(isfunction(number))

输出

执行时,上述程序将生成以下输出 -

True
False

方法 3:使用 type() 函数

type() 函数标识对象的类型,以便我们可以根据对象是否为函数类型来确定它是否可调用。

简单来说,type() 函数返回对象的数据类型。

示例

以下程序使用 type() 函数检查 Python 变量是否为函数 −

# 创建一个函数,返回传递给它的 2 个数字的加法
def addition(p, q):
    # 返回给定两个数字(参数)的总和
      return p+q
 
# 通过将变量作为参数传递给它来检查变量的类型
# 变量
print(type(addition))
# 给定变量
number = 10

print(type(number))

输出

执行时,上述程序将生成以下输出 -

<class 'function'>
<class 'int'>

方法 4:使用内置 hasattr() 函数

hasattr() 是一个识别对象类型的函数,以便我们可以确定该对象类型是否为函数。与 callable() 一样,它也返回一个布尔值。

示例

以下程序使用内置 hasattr() 函数检查 Python 变量是否为函数 -

# 创建一个函数,返回传递给它的 2 个数字的加法
def addition(p, q):
    # 返回给定两个数字(参数)的总和
   return p+q
 
# 使用 hasattr() 函数检查变量 'addition' 的类型是否为函数
# 如果是函数则返回 True,否则返回 False
print(hasattr(addition, '__call__'))
number = 10
# 检查变量 'number' 是否为函数
print(hasattr(number, '__call__'))

输出

执行时,上述程序将生成以下输出 -

True
False

方法 5:使用 isinstance() 函数

isinstance() 是一个函数,它识别对象的类型,以便我们可以确定该对象是否为函数。它返回一个布尔值。

示例

以下程序使用 isinstance() 函数检查 Python 变量是否为函数 -

# 导入类型模块
导入类型

# 创建一个函数,返回传递给它的 2 个数字的加法
def addition(p, q):
    # # 返回给定两个数字(参数)的总和
   return p+q

# 将对象 types.FunctionType 作为参数传递给
# isinstance() 函数以检查它是否为函数
print(isinstance(addition, types.FunctionType))
number = 10
# 检查上述变量"number"是否为函数
print(isinstance(number, types.FunctionType))

输出

执行时,上述程序将生成以下输出 -

True
False

结论

本文教给我们五种不同的方法来确定输入变量是否为函数类型。我们还熟悉了 hasattr() 和 isinstance() 函数,它们允许我们确定两个变量是否属于同一类型。


相关文章