名称 | 类型 | 说明 | 改变 |
---|---|---|---|
__annotions __ | dict | 参数和返回值的注解,无,则空dict | 读写 |
__call __ | method-wrapper | 实现()运算符,即可调用对象协议 | 读写 |
__closure __ | tuple | 函数闭包,即自由变量的绑定(通常是None) | 只读 |
__code __ | code | 编译成字节码的函数元数据和函数定义体 | 读写 |
__defaults __ | tuple | 位置或关键字参数的任何默认值的元组,无,则是None | 读写 |
__get __ | method-wrapper | 实现只读描述符协议 | 读写 |
__globals __ | dict | 函数所在模块中的全局命名空间 | 读读 |
__kwdefaults __ | dict | 仅限关键字形式参数的默认值,无,则是None | 读写 |
__name __ | str | 函数名称 | 读写 |
__qualname __ | str | 函数的限定名称,如Random.choice | 读写 |
__doc __ | str | 文档字符串,不会被子类继承,无,则是None | 读写 |
__code __本身就是一个对象,有15个属性,列举几个常用的属性
名称 | 类型 | 说明 |
---|---|---|
co_argcount | int | 函数的位置参数和关键字参数的个数 |
co_kwonlyargcount | 元组 | 仅限关键字参数的个数 的元组 |
co_freevars | tupe | 自由变量名称元组(通过函数的闭包引用) |
co_name | str | 用于定义此代码对象的名称,即函数名 |
co_names | tupe | 局部变量名称的元组 |
co_nlocals | int | 局部变量数 |
co_filename | str | 创建此代码对象的文件的名称 |
co_varnames | tuple | 参数和局部变量的名称的元组 |
def make_averager():
series = []
zz = 88
def averager(new_valuer=11,*,g=22,c=99):
print(zz)
series.append(new_valuer)
total = sum(series)
return total/len(series)
return averager
av = make_averager()
print(av.__code__)
<code object averager at 0x000002635A6A9030, file "D:/pythoncodesaveplace/TicTacToe/1.py", line 18>
print(av.__code__.co_argcount)
1 #指的是POSITIONAL_OR_KEYWORD
print(av.__code__.co_kwonlyargcount)
2 #指的是g,c参数
print(av.__code__.co_freevars)
('series','zz')
print(av.__code__.co_name)
averager
print(av.__code__.co_names)
('append', 'sum', 'len')
print(av.__code__.co_nlocals)
3 #指的是('new_valuer', 'g', 'total')这几个变量
print(av.__code__.co_filename)
D:/pythoncodesaveplace/TicTacToe/1.py
print(av.__code__.co_varnames)
('new_valuer', 'g', 'total')
__closure __是元组,存放自由变量对象
av(10)
av(11)
print(av.__closure__)
(<cell at 0x000001A30D936618: list object at 0x000001A30D9EA548>,<cell at 0x000001A30D936648: int object at 0x00000000616071A0>)
print(av.__closure__[0])
<cell at 0x000001A30D936618: list object at 0x000001A30D9EA548>
print(av.__closure__[0].cell_contents)
[10,11]
print(av.__closure__[1])
<cell at 0x000001A30D936648: int object at 0x00000000616071A0>
print(av.__closure__[1].cell_contents)
88
defaults __ 指的是POSITIONAL_OR_KEYWORD参数的默认值
print(av.__defaults __)
(11,)
__kwdefaults __指的是KEYWORD_ONLY仅限关键字参数的默认值
print(av.__kwdefaults __)
{'g': 22,c=99}
__qualname __
print(av.___qualname_ __)
make_averager.<locals>.averager
__name __
print(av.___name_ __)
averager