1

可以(尽管通常不是一个好主意)创建一个将其成员定义存储在globals()或另一个字典中的类:

oddclass = type("oddclass", (object,), globals())

有没有办法对函数做同样的事情,以便它的所有局部变量都存储在全局(或模块)命名空间中,而不是它自己的?

通过声明变量,我可以一次获得一个变量的相同效果global

def myfunction():
    global x
    x = 10

我正在寻找的是一种对所有内部变量(也适用于那些尚未在顶部声明的变量)实现相同效果的通用myfunction方法,理想情况下是某种可以轻松添加然后删除的单线不再需要。

PS。我问这个问题是因为我很好奇 python 管理函数命名空间的方式。我的动机是在某些情况下将其用作临时调试帮助(具有大量本地数据的函数神秘地失败),但不要介意:我可以global像上面那样使用。这个问题是关于python函数内部的。

4

1 回答 1

1

这有效

>>> def test():
    x = 10
    y = 'Some string'
    for k, v in locals().items():
        globals()[k] = v


>>> test()

>>> x
10
>>> y
'Some string'

请记住,这是非常不安全的技术,永远不应该使用

于 2012-10-20T23:20:52.280 回答