关于python:python3中的函数类型是什么

what is the functions type in python3

本问题已经有最佳答案,请猛点这里访问。

在python 3中,所有东西都是obj,函数也是。函数是一流的公民,这意味着我们可以像其他变量一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> class x:
    pass

>>>
>>> isinstance(x,type)
True
>>> type(x)
<class 'type'>
>>>
>>> x=12
>>> isinstance(x,int)
True
>>> type(x)
<class 'int'>
>>>

但是功能不同!:

1
2
3
4
5
6
7
8
9
10
11
>>> 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函数类型?


您可以使用types.FunctionType

1
2
3
4
5
6
>>> def x():
...     pass
...
>>> import types
>>> isinstance(x, types.FunctionType)
True

@对于函数的类型,错误的答案是正确的。

但是,如果您要查找的是检查是否可以使用()调用特定对象,那么您可以使用内置函数callable()。示例-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> def f():
...  pass
...
>>> class CA:
...     pass
...
>>> callable(f)
True
>>> callable(CA)
True
>>> callable(int)
True
>>> a = 1
>>> callable(a)
False