簡體   English   中英

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

[英]What does `from six.moves import urllib` do in Python?

我在 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的結構。 另見此處

編輯以解決問題的更新:

TLDR; 在這種情況下,導入的模塊urllib和文件系統上的文件之間不一定有直接關系。 相關文件正是six.__file__指向的內容。

第三方模塊在sys.path中列出的文件/目錄中定義。 大多數情況下,您可以通過檢查相關模塊的__file__屬性找到導入模塊的文件名,例如six.__file__ 然而,對於six.moves ,事情並不那么簡單,正是因為暴露的模塊實際上可能不會一對一地映射到實際的 Python 模塊,而是這些模塊的黑客版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM