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


You
You 2024-01-07 23:12:55 65987 赞同 0 反对 0
分类: 资源
在本文中,我们将学习如何检测一个Python变量是否为函数。 有时候,确定一个Python变量是否是一个函数是很重要的。当代码有上千行并且你不是代码的创建者时,这可能看起来毫无价值,你可能会质疑一个变量是否是一个函数。

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

有时候,确定一个Python变量是否是一个函数是很重要的。当代码有上千行并且你不是代码的创建者时,这可能看起来毫无价值,你可能会质疑一个变量是否是一个函数。

Methods Used

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

  • 使用内置的callable()函数

  • 使用 inspect 模块的 isfunction() 方法

  • 使用type()函数

  • 使用内置的 hasattr() 函数

  • 使用isinstance()函数

Method 1: Using the built-in callable() function

The callable() function returns a boolean result. It returns True if the function is callable else it returns False.

Syntax

callable(object)

登录后复制

算法(步骤)

Following are the Algorithms/steps to be followed to perform the desired task. −

  • 创建任意随机函数。这里的函数返回传递给它的两个数字的相加结果。

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

  • Use the callable() function to check whether the object passed ( i.e, addition) is a function or NOT. It returns True if it is a function else False.

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

  • Similarly, check whether the variable ‘number’ is a function or not using the callable() function.

Example

The following program checks whether a python variable is a function or not using the built-in callable() function −

# creating a function that returns the addition
# of 2 numbers passed to it
def addition(p, q):
# returning the sum of the given two numbers(arguments)
return p+q

# using the callable() function to check whether
# the variable ‘addition’ is a function
# it returns True if it is a function else False
print(callable(addition))
number = 10
# checking whether the variable ‘number’ is a function
print(callable(number))

登录后复制

输出

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

True
False

登录后复制登录后复制登录后复制登录后复制

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

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

Additionally, to utilize this, you must first import isfunction from inspect module before using it to obtain a boolean value.

Example

以下程序使用inspect模块的isfunction()函数来检查一个Python变量是否是一个函数。

# importing isfunction from inspect module
from inspect import isfunction

# creating a function that returns the addition
# of 2 numbers passed to it
def addition(p, q):
# returning the sum of the given two numbers(arguments)
return p+q

# using the isfunction() function to check whether
# the variable ‘addition’ is a function or not
# it returns True if it is a function else False
print(isfunction(addition))
number = 10

print(isfunction(number))

登录后复制

输出

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

True
False

登录后复制登录后复制登录后复制登录后复制

Method 3: Using the type() function

The type() function identifies the type of an object so that we may determine whether it is callable or not based on whether the object is of the function type.

In simple terms, the type() function returns the data type of an object.

Example

以下程序使用type()函数来检查一个python变量是否是一个函数或者不是一个函数。

# creating a function that returns the addition
# of 2 numbers passed to it
def addition(p, q):
# returning the sum of the given two numbers(arguments)
return p+q

# checking the type of the variable by passing
# the variable as an argument to it
print(type(addition))
# given Variable
number = 10

print(type(number))

登录后复制

输出

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

登录后复制

Method 4: Using the built-in hasattr() function

The hasattr() is a function that identifies the type of an object so that we can determine whether or not that object type is a function. In the same way as callable(), it also returns a boolean value.

Example

The following program checks whether a python variable is a function or not using the built-in hasattr() function −

# creating a function that returns the addition
# of 2 numbers passed to it
def addition(p, q):
# returning the sum of the given two numbers(arguments)
return p+q

# checking whether the type of variable ‘addition’
# is a function or not using hasattr() function
# it returns True if it is a function else False
print(hasattr(addition, ‘__call__’))
number = 10
# checking whether the variable ‘number’ is a function or not
print(hasattr(number, ‘__call__’))

登录后复制

输出

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

True
False

登录后复制登录后复制登录后复制登录后复制

方法5:使用isinstance()函数

The isinstance() is a function that identifies the type of an object so that we may determine whether or not that object is a function. It returns a boolean value.

Example

The following program checks whether a python variable is a function or not using isinstance() function −

# importing the types module
import types

# creating a function that returns the addition
# of 2 numbers passed to it
def addition(p, q):
# # returning the sum of the given two numbers(arguments)
return p+q

# passing object, types.FunctionType as an argument to the
# isinstance() function to check whether it is a function or not
print(isinstance(addition, types.FunctionType))
number = 10
# checking whether the above variable ‘number’ is a function or not
print(isinstance(number, types.FunctionType))

登录后复制

输出

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

True
False

登录后复制登录后复制登录后复制登录后复制

Conclusion

这篇文章教会了我们五种不同的方法来确定输入变量是否为函数类型。我们还熟悉了hasattr()和isinstance()函数,它们可以帮助我们确定两个变量是否属于相同的类型。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
YouL0
粉丝 0 资源 386 + 关注 私信
最近热门资源
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  80
以openkylin为例编译安装内核  76
分享解决宏碁电脑关机时自动重启的方法  73
统信uosboot区分未挂载导致更新备份失败  63
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  63
统信uos安装mysql的实例参考  59
格之格打印机dp3300系列国产系统uos打印机驱动选择  57
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。  51
MySQL国产平替最佳选择---万里数据库(GreatDB)  45
最近下载排行榜
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
以openkylin为例编译安装内核 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
统信uos安装mysql的实例参考 0
格之格打印机dp3300系列国产系统uos打印机驱动选择 0
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。 0
MySQL国产平替最佳选择---万里数据库(GreatDB) 0
作者收入月榜
1

prtyaa 收益400.83元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.52元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!