gpt4 book ai didi

python - `from six.moves import urllib` 在 Python 中做了什么?

转载 作者:IT老高 更新时间:2023-10-28 20:51:10 29 4
gpt4 key购买 nike

我在 Python 代码中找到了以下行:

from six.moves import urllib

同时,我可以在任何地方找到 urllib.py。我发现包根目录中有一个文件six.py,里面有class Module_six_moves_urllib(types.ModuleType):

是这个吗?这是怎么定义的?

更新

对不起,我是 Python 新手,问题是关于 Python 语法的。我了解到,import 之后是没有 py 扩展名的 Python 文件名。那么,这种情况下这个文件在哪里呢?

最佳答案

six是一个帮助编写与 Python 2 和 Python 3 兼容的代码的包。

开发人员在为 Python2 和 3 编写代码时面临的一个问题是标准库中的几个模块的名称发生了变化,尽管功能保持不变。

six.moves 模块以通用名称为 Python2 和 3 提供这些模块(主要是通过以 Python 3 模块的名称提供 Python2 模块)。

所以你的台词

from six.moves import urllib

在使用 Python3 运行时导入 urllib 并使用 Python2 导入 urlliburllib2urlparse 的混合体,模仿 Python3 的 urllib 的结构。另见 here .

编辑以解决问题的更新:

TLDR;在这种情况下,导入的模块 urllib 和文件系统上的文件之间不一定有直接关系。相关文件正是 six.__file__ 指向的内容。

第三方模块定义在一个文件/目录中 列于 sys.path .大多数情况下,您可以通过检查相关模块的 __file__ 属性来找到导入模块的文件的名称,例如六.__file__。然而,使用 six.moves 事情就没有那么简单了,正是因为暴露的模块可能实际上并没有一对一地映射到实际的 Python 模块,而是那些被破解的版本。

关于python - `from six.moves import urllib` 在 Python 中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34989206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com