开发者

Is it safe to modify the output of globals()?

The documentation for the locals() function specifically warns not to modify its output, as interpreters may not reflect changes in the local scope. I'm assuming that means the Python spec doesn't require it, even though it works in CPython.

I'd like to开发者_运维知识库 know if this is the same for globals(). There's no warning in the documentation, but I find it strange that this would differ as each function apparently performs the same action on a different scope.

If it's safe, modifying globals()' output would improve the simplicity and compatibility of a project I'm working on.


Modifying locals() doesn't work reliably, even in CPython. It happens to work in module and class scopes, but it fails inside a function (any modifications "won't take", since locals() provides a copy of the local namespace in that case, rather than a reference to the real thing)

However, globals() is different, since that always refers to the module namespace, and module namespaces are required to behave like ordinary dictionaries. So yes, the lack of a warning on globals() isn't an oversight, it really is allowed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜