python 函数内省

python中函数也是对象, 除了 __doc__函数对象还有很多属性。使用 dir 函数可以探知 factorial 具有下述属性:
python 函数内省_第1张图片
其中大多数属性是 Python 对象共有的。本节讨论与把函数视作对象相关的几个属性,先从__dict__ 开始

与用户定义的常规类一样,函数使用 __dict__ 属性存储赋予它的用户属性。这相当于一种基本形式的注解。一般来说,为函数随意赋予属性不是很常见的做法,但是 Django 框架这么做了。参见“The Django admin site”文档(https://docs.djangoproject.com/en/1.10/ref/contrib/admin/)中对 short_descriptionbooleanallow_tags 属性的说明。这篇 Django文档中举了下述示例,把 short_description 属性赋予一个方法,Django 管理后台使用这个方法时,在记录列表中会出现指定的描述文本:
在这里插入图片描述
下面重点说明函数专有而用户定义的一般对象没有的属性。计算两个属性集合的差集便能得到函数专有属性列表
python 函数内省_第2张图片
用户定义的函数的属性

名称 类型 说明
__annotations__ dict 参数和返回值的注解
__call__ method-wrapper 实现 () 运算符;即可调用对象协议
__closure__ tuple 函数闭包,即自由变量的绑定(通常是 None
__code__ code 编译成字节码的函数元数据和函数定义体
__defaults__ tuple 形式参数的默认值
__get__ method-wrapper 实现只读描述符协议
__globals__ dict 函数所在模块中的全局变量
__kwdefaults__ dict 仅限关键字形式参数的默认值
__name__ str 函数名称
__qualname__ str 函 数 的 限 定 名 称, 如 Random.choice参阅 PEP 3155https://www.python.org/dev/peps/pep-3155/

你可能感兴趣的:(python)