我读到一个函数是 python 中一个类的对象。为了进一步理解,我做了以下操作:
>>> a=10
>>> a.__class__
<type 'int'>
>>> int.__class__
<type 'type'>
>>>
>>>
>>> def T1():
... print 'test'
...
>>> T1.__class__
<type 'function'>
>>> function.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined
Run Code Online (Sandbox Code Playgroud)
问:为什么解释器会在第二种情况下抛出错误而不是在第一种情况下?我期待它返回<type 'type'>。请纠正我的理解。
有一个函数类型,但没有内置名称。您可以在该types模块下找到另一个参考:
>>> import types
>>> def T1():
... pass
...
>>> T1.__class__ is types.FunctionType
True
>>> print(repr(types.FunctionType))
<class 'function'>
Run Code Online (Sandbox Code Playgroud)
因此,这里唯一的区别是function不是内置名称,与int. 如果出于某种原因您希望在命名空间中使用该名称,则可以绑定它:
>>> function = type(lambda: 0)
>>> function
<class 'function'>
Run Code Online (Sandbox Code Playgroud)