在python 3中,每件事都是objs,函数也是如此。函数是一等公民,意味着我们可以像其他变量一样。
>>> class x:
pass
>>>
>>> isinstance(x,type)
True
>>> type(x)
<class 'type'>
>>>
>>> x=12
>>> isinstance(x,int)
True
>>> type(x)
<class 'int'>
>>>
但功能不同! :
>>> def x():
pass
>>> type(x)
<class 'function'>
>>> isinstance(x,function)
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
isinstance(x,function)
NameError: name 'function' is not defined
>>>
为什么错误?什么是python函数类型?
答案 0 :(得分:3)
@fattru的答案对于函数的类型是正确的。
但是,如果您要查找的是检查是否可以使用()
调用特定对象,则可以使用内置函数callable()
。示例 -
>>> def f():
... pass
...
>>> class CA:
... pass
...
>>> callable(f)
True
>>> callable(CA)
True
>>> callable(int)
True
>>> a = 1
>>> callable(a)
False