按变量声明的顺序检索locals() - python

viv*_*ify 4 python locals

例如,

a = 1

b = 2 

c = 3
Run Code Online (Sandbox Code Playgroud)

打电话的时候locals(),我明白了

{ 'a': 1, 'c': 3, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None }
Run Code Online (Sandbox Code Playgroud)

如何从locals()中检索局部变量作为我定义的顺序?

Aar*_*all 5

您可以通过访问代码对象在函数中执行此操作.

__code__对象的.co_varnames属性存储中定义的顺序变量.这个扩展的例子具有指导意义,它显示了如何将参数传递给函数,以及内部定义的变量:

def foo(a, b, c=3, d=4, *args, **kwargs):
    e = 5
    f = 6
    g = 7
    for var in foo.__code__.co_varnames:
        print(var, locals()[var])
Run Code Online (Sandbox Code Playgroud)

现在(由于print语句和函数之间的差异,在Python 2中会略有不同.):

>>> foo(1, 2, *(11, 12, 13), **{'h': 14, 'i': 15, 'j': 16})
a 1
b 2
c 11
d 12
args (13,)
kwargs {'i': 15, 'h': 14, 'j': 16}
e 5
f 6
g 7
var var
Run Code Online (Sandbox Code Playgroud)