Python 自定义函数的特殊属性(收藏专用)

475 查看

Python 中通过函数定义所创建的用户自定义函数对象均具有一些特殊属性,需要注意的是这里介绍的是自定义函数(function类型)的特殊属性,而非方法(method 类型)的特殊属性,函数和方法的特熟属性以及默认的返回值可能不尽相同。

对于大多数特殊属性,可以通过下面这个例子示范一下:

首先看一下方法与函数的区别:实例的函数为bound method,而类的函数以及闭包均为function,需要强调的是 Python 2.x 中类的函数为unbound method,这点与Python 3.x 有所不同,本文则基于 Python 3.51 整理。

__doc__

可写;用于获取函数的文档说明,如果没有,则返回 None

__name__

可写;获取函数的名称。

__qualname__

可写;获取函数的qualname:点示法显示函数名称、所在的类、模块等梯级地址。

__module__

可写;返回函数所在的模块,如果无则返回None

__defaults__

可写;以元组的形式返回函数的默认参数,如果无默认参数则返回None

__code__

可写;返回已编译的函数对象。

__globals__

只读,以字典的形式返回函数所在的全局命名空间所定义的全局变量。

__dict__

可写;以字典的形式返回命名空间所支持的任意自定义的函数属性。

__closure__

只读;以包含cell的元组形式返回闭包所包含的自由变量。

__annotations__

可写;具体详见“Python 的函数注释

__kwdefaults__

可写,具体详见 “Python 的 Keyword-Only Arguments(强制关键字参数)