documentation for the locals() function特别警告不要修改其输出,因为解释器可能不会反射(reflect)本地范围内的变化。我假设这意味着 Python 规范不需要它,即使它在 CPython 中工作。
我想知道 globals() 是否也一样。 the documentation 中没有警告,但我觉得奇怪的是这会有所不同,因为每个函数显然在不同的范围内执行相同的操作。
如果安全的话,修改 globals()' 输出会提高我正在处理的项目的简单性和兼容性。
最佳答案
修改 locals()
不能可靠地工作,即使在 CPython 中也是如此。它恰好在模块和类范围内工作,但在函数内失败(任何修改“不会接受”,因为 locals()
在这种情况下提供本地命名空间的副本,而不是引用实物)
但是,globals()
不同,因为 always 指的是模块命名空间,并且模块命名空间需要像普通字典一样工作。所以是的,在 globals()
上缺少警告并不是疏忽,它确实是允许的。
关于python - 修改 globals() 的输出是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958793/