python - Python __import__ 函数中的 `globals` 和 `locals` 参数有什么用?

标签 python import

有一部分__import__在 Python 文档中,我不明白:

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

The function imports the module name, potentially using the given globals and locals to determine how to interpret the name in a package context. The standard implementation does not use its locals argument at all, and uses its globals only to determine the package context of the import statement.

模块名称有什么可“解释”的?什么是包上下文?

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

spam = __import__('spam', globals(), locals(), [], -1)

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

我可能遗漏了与导入模块相关的命名空间逻辑的某些部分。你能告诉我一篇解释这个/有 __import__ 函数示例的文章吗?

最佳答案

The standard implementation does not use its locals argument at all, and uses its globals only to determine the package context of the import statement.

(来自 docs.python.org)

我还是不知道怎么做globals被使用;什么全局变量可以影响方式import声明有效?

编辑:在查看 import.c 之后在 Python 2.5 源代码中,我发现 __import__希望找到 __name____path__globals为了增加相对于在这些变量之一中找到的路径的导入搜索路径,按该顺序。

关于python - Python __import__ 函数中的 `globals` 和 `locals` 参数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874342/

相关文章:

python - Python 中 `from ... import ...` 语法背后的推理

java - lein 编译问题 (Clojure)

python - 无法通过 MySQLdb 在 Python 脚本中执行 INSERT 语句

python - Django 导入日期时间

scala - 如何在相对包导入中引用父包?

python - 在 Django 中运行纯 SQL 查询时如何获取字段名称

MySql 导入卡住

python - 使用 lldb 和 python 捕获 `UIImageView` 属性

python - 如何绘制正确的分布 TreeMap ?

python - 如何修复 "tuple object has no attribute"?