Python __import__函数中的`globals`和`locals`参数是什么?

Mar*_*óth 9 python import

__import__Python文档中有一部分,我不明白:

__import__(name[, globals[, locals[, fromlist[, level]]]])

该函数name可能使用给定的方法导入模块,globalslocals确定如何解释name包上下文中的内容.标准实现根本不使用它的locals参数,并globals仅使用它来确定import语句的包上下文.

什么是"解释"模块名称?什么是包上下文?

使用这些参数的示例调用如下所示:

spam = __import__('spam', globals(), locals(), [], -1)
Run Code Online (Sandbox Code Playgroud)

为什么示例提供globals()locals()功能?当我只提供时会发生什么globals()?或者都不是?

我可能错过了与导入模块有关的命名空间逻辑的一些部分.你能指点我一篇解释这个/有__import__功能的例子的文章吗?

900*_*000 6

标准实现根本不使用它的locals参数,并globals仅使用它来确定import语句的包上下文.

(来自docs.python.org)

我仍然不知道如何globals使用; 什么全局变量可以影响import语句的工作方式?

编辑:看后import.c在Python 2.5源代码我发现,__import__希望能够找到任何__name__或者__path__globals为了增加导入的搜索路径相对于这些变量中的一个找到的路径(S)的顺序.