修改globals()的输出是否安全?

rsp*_*eed 21 python globals

locals()函数文档特别警告不要修改其输出,因为解释器可能无法反映本地范围的更改.我假设这意味着Python规范不需要它,即使它在CPython中工作.

我想知道globals()是否相同.文档中没有任何警告,但我觉得奇怪的是,这会有所不同,因为每个函数显然在不同的范围内执行相同的操作.

如果它是安全的,修改globals()'输出将改善我正在处理的项目的简单性和兼容性.

nco*_*lan 25

即使在CPython中,修改locals() 也不能可靠地工作.它恰好在模块和类范围内工作,但它在函数内部失败(任何修改"不会采取",因为locals()在这种情况下提供本地命名空间的副本,而不是对真实事物的引用)

但是,globals()不同的是,因为它始终引用模块名称空间,并且模块名称空间需要像普通字典一样运行.所以,是的,缺乏警告globals()不是疏忽,实际上是允许的.