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

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

本文将介绍如何检测Python变量是否为函数。

有时候,确切地知道Python变量是否为函数是很重要的。当代码有数千行且你不是代码的创建者时,这可能看起来毫无价值,你可能会问自己变量是否是函数。

使用的方法

以下是检查Python变量是否为函数的方法:

  • 使用内置的callable()函数

  • 使用inspect模块的isfunction()函数

  • 使用type()函数

  • 使用内置的hasattr()函数

  • 使用isinstance()函数

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

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

语法

callable(object)
Bash

算法(步骤)

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

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

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

  • 使用callable()函数检查传递的对象(即addition)是否为函数或NOT。如果是函数,则返回True,否则返回False。

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

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

示例

下面的程序使用内置的callable()函数检查Python变量是否为函数:

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

number = 10
# 使用callable()函数检查变量'number'是否为函数
print(callable(number))
Bash

输出

执行上面的程序将生成以下输出:

True
False
Bash

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

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

此外,在使用之前必须先从inspect模块导入isfunction函数以获得布尔值。

示例

以下程序使用检查模块的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
# 使用isfunction()函数检查变量'number'是否为函数
print(isfunction(number))
Bash

输出

执行上面的程序将生成以下输出:

True
False
Bash

方法3:使用type()函数

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

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

例子

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

# 创建一个函数,返回2个数字的和 
def addition(p, q):
   # 返回给定两个数字(参数)之和
      return p+q

# 通过将变量作为参数传递给它来检查变量的类型
print(type(addition))
# 给定变量
number = 10

print(type(number))
Bash

输出

运行以上程序将生成以下输出 –

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

方法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__'))
Bash

输出

运行以上程序将生成以下输出 –

True
False
Bash

方法5:使用 isinstance() 函数

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

例子

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

# 导入types模块
import types

# 创建一个函数,返回2个数字的和 
def addition(p, q):
   # # 返回给定两个数字(参数)之和
   return p+q

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

输出

运行以上程序将生成以下输出 –

True
False
Bash

结论

本文介绍了五种不同的方法来确定输入变量是否为函数类型。我们还熟悉了hasattr()和isinstance()函数,这些函数允许我们确定两个变量是否为相同类型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册