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

标签 python global

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/

相关文章:

python - 无法创建字典

python - Pandas 数据帧 : convert WKT into GeoJSON in a new column using Lambda function

scala - 玩! 2.0 Scala - 访问全局对象

c - 如何从符号表中获取全局变量定义?

facebook - 如何获得特定国家/地区的点赞数?

javascript - `var` 中的 `if` 是否会影响 if 是否被评估?

python - 处理两个列表,逐行迭代并连接值

python - 断管错误 Python 子进程

python - 在django中生成MS word文档

c++ - 将全局变量作为 const 引用传递