代码之家  ›  专栏  ›  技术社区  ›  max

在字典理解中使用locals()

  •  5
  • max  · 技术社区  · 14 年前

    def f():
        a = 1
        b = 2
        list_ = ['a', 'b']
        dict_ = {x : locals()[x] for x in list_}
    

    我可以用 globals()

    有没有什么东西可以使字典在函数范围内精确地使用变量 f

    注意:我这样做是因为我有很多变量,我想以后把它们放到字典里,但是不想通过编写代码来使代码复杂化 dict_['a'] a 同时。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Greg Hewgill    14 年前

    你也许可以这样做:

    def f(): 
        a = 1 
        b = 2 
        list_ = ['a', 'b'] 
        locals_ = locals()
        dict_ = dict((x, locals_[x]) for x in list_)
    

    但是,我强烈反对使用 locals() 为此目的。

        2
  •  1
  •   David Wolever    14 年前

    locals() 在dict理解中,将引用理解的名称空间。

    f_locals = locals()
    dict_ = {x : f_locals[x] for x in list_}