2015-08-15 23 views
8

中的函數類型,每個東西都是objs,也是函數。職能是一流的公民,這意味着我們可以像其他變量一樣做。什麼是Python 3中的python3

>>> 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函數類型?

回答

7

您可以使用types.FunctionType

>>> def x(): 
...  pass 
... 
>>> import types 
>>> isinstance(x, types.FunctionType) 
True 
3

@ falsetru的答案是函數的類型是正確的。

但是,如果您要查找的是使用()來檢查是否可以調用特定對象,那麼您可以使用內置函數callable()。示例 -

>>> def f(): 
... pass 
... 
>>> class CA: 
...  pass 
... 
>>> callable(f) 
True 
>>> callable(CA) 
True 
>>> callable(int) 
True 
>>> a = 1 
>>> callable(a) 
False