Python函数的特殊属性

Python 的函数特殊属性

__doc__

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

__name__

获取函数的名称
例如:

In [72]: def demo(a:3,b:'str') -> int:
    ...:     return a
In [77]: demo.__name__
Out[77]: 'demo'

__qualname__

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

__module__

返回函数所在的模块,如果无则返回None。

__defaults__

函数的默认参数是保存在 defaults 中的。以元组的形式返回函数的默认参数,如果无默认参数则返回None。
例如{} 不能作为默认参数的问题。如果是可变类型,则在函数体内对其修改会导致默认参数值发生变化。

In [86]: def func(d={
     }):
    ...:     d[1]='test'
    ...:     return d
    ...:

In [87]: func.__defaults__
Out[87]: ({
     },)

In [88]: func()
Out[88]: {
     1: 'test'}

In [89]: func.__defaults__
Out[89]: ({
     1: 'test'},)

__code__

返回已编译的函数对象。

__globals __

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

__dict__

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

__closure__

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

__annotations __

python3.x引入了函数注释,增强函数的注释功能。可以使用:对参数逐个注释,注释内容可以是任何形式,比如参数的类型,作用,取值范围等等,返回值使用->标注,所有的注释都会保存至函数的属性(__annotations__)中,可以通过函数的特殊属性__annotations__获取,结果会以字典的形式返回。这些函数注释不影响默认参数的使用。

# 例如刚刚定义的demo函数,就加上了注释。
In [74]: demo.__annotations__
Out[74]: {
     'a': 3, 'b': 'str', 'return': int}

__kwdefaults__

强制关键字参数
在正常的函数参数中存在一个"*",在该符号之后的所有参数(可以是一个,多个)均被称为强制关键字参数。必须通过关键字参数的形式传递该参数,例如(age=2)。如下面一个例子

关于这些属性的官网汇总如下:
Python函数的特殊属性_第1张图片

你可能感兴趣的:(python)