python中的__code__的属性
摘要:在看python异步的源码中偶然看到的__code__中的co_names和co_varnames属性以及co_freevars和co_consts属性
co_names和co_varnames属性
__code__.co_names是一个包含全局变量名字的元组。__code__.co_varnames一个包含局部变量名字的元组。
代码如下:
a = 1
def f(b):
c = a + b
print(f.__code__.co_varnames)
print(f.__code__.co_names)
'''
运行结果:
('b', 'c')
('a',)
'''
参考自:什么是co_names?
co_freevars和con_consts
这两个变量通过下面例子意会吧....
代码如下:
def f(a):
c = "zeze"
def g(b):
print(a, b)
return g
print(f.__code__.co_freevars)
print(f.__code__.co_consts)
g = f(5)
print(g.__code__.co_freevars)
print(g.__code__.co_consts)
'''
运行结果:
格式化
()
(None, 'zeze', <code object g at 0x7f9725975a30, file "/code/main.py", line 3>)
('a',)
(None,)
'''
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。