创建一个在globals()
或另一个字典中存储其成员定义的类是可能的(尽管通常不是一个好主意):
oddclass = type("oddclass", (object,), globals())
有没有办法对函数做同样的事情,以便它的所有局部变量都存储在全局(或模块)命名空间中,而不是它自己的?
通过声明变量global
,我可以一次获得一个变量的相同效果:
def myfunction():
global x
x = 10
我正在寻找的是一种一般方式,以便对myfunction
的所有内部变量(也适用于那些尚未在顶部声明的内部变量)实现相同的效果,理想情况下,可以轻松添加某种单线,然后在不再需要时将其移除。
PS。我问这个问题是因为我对python管理函数名称空间的方式感到好奇。我的动机是在某些情况下使用它作为临时调试辅助工具(一个神秘失败的大量本地数据的函数),但不要小心:我可以使用global
如上。这个问题是关于python函数内部的。
答案 0 :(得分:1)
这有效
>>> def test():
x = 10
y = 'Some string'
for k, v in locals().items():
globals()[k] = v
>>> test()
>>> x
10
>>> y
'Some string'
请记住,这是非常不安全的技术,不应该使用。