鱼C论坛

 找回密码
 立即注册
查看: 1179|回复: 11

[已解决]Python 如何判断变量类型是否为函数?

[复制链接]
发表于 2019-8-17 16:08:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python 如何判断变量类型是否为函数?
最佳答案
2019-8-18 13:06:17
本帖最后由 yjsx86 于 2019-8-18 13:14 编辑
  1. class Student:
  2.     pass

  3. s1 = Student()
  4. s2 = lambda x: x*5
  5. t = [123, "123", s1, s2, [], {}, ()]
  6. for item in t:
  7.     print(type(item), "callable: ", callable(item))
复制代码


<class 'int'> callable:  False
<class 'str'> callable:  False
<class '__main__.Student'> callable:  False
<class 'function'> callable:  True
<class 'list'> callable:  False
<class 'dict'> callable:  False
<class 'tuple'> callable:  False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-17 16:19:48 | 显示全部楼层
本帖最后由 DT_Nelson 于 2019-8-17 16:21 编辑

Python好像不存在function这个类,于是用了一个很无奈的办法
  1. >>> def func():
  2.         pass
  3. >>> type(func)
  4. <class 'function'>
  5. >>> s = lambda x: x
  6. >>> type(s)
  7. <class 'function'>
  8. >>> str(type(func)) == "<class 'function'>"
  9. True
  10. >>> str(type(s)) == "<class 'function'>"
  11. True
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 16:20:56 | 显示全部楼层
print就完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2019-8-17 16:20:56 | 显示全部楼层
DT_Nelson 发表于 2019-8-17 16:19
Python好像不存在function这个类,于是用了一个很无奈的办法

我知道这种方法,我想问有没有更简便的方法?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 09:26:37 | 显示全部楼层
zltzlt 发表于 2019-8-17 16:20
我知道这种方法,我想问有没有更简便的方法?

你说的最简便是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2019-8-18 09:34:34 | 显示全部楼层
_2_ 发表于 2019-8-18 09:26
你说的最简便是什么意思?

不要那么麻烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 09:43:43 | 显示全部楼层
本帖最后由 _2_ 于 2019-8-18 09:47 编辑

file:///C:\Users\gwdsir\AppData\Local\Temp\ksohtml2212\wps1.png
我仿佛看到了什么......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-18 09:45:59 | 显示全部楼层
_2_ 发表于 2019-8-18 09:43
我仿佛看到了什么......

???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-18 09:47:33 | 显示全部楼层
_2_ 发表于 2019-8-18 09:43
我仿佛看到了什么......

发代码,不要截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 09:48:04 | 显示全部楼层

图片怎么上传???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 09:54:14 | 显示全部楼层
  1. type(object_or_name, bases, dict)
  2. type(object) -> 对象的类型
  3. type(name, bases, dict) -> 一个新的类型
复制代码

我们可不可以用type()函数定义一个function类?
(啃文档症又犯了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 13:06:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yjsx86 于 2019-8-18 13:14 编辑
  1. class Student:
  2.     pass

  3. s1 = Student()
  4. s2 = lambda x: x*5
  5. t = [123, "123", s1, s2, [], {}, ()]
  6. for item in t:
  7.     print(type(item), "callable: ", callable(item))
复制代码


<class 'int'> callable:  False
<class 'str'> callable:  False
<class '__main__.Student'> callable:  False
<class 'function'> callable:  True
<class 'list'> callable:  False
<class 'dict'> callable:  False
<class 'tuple'> callable:  False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 08:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表