2012-10-29 46 views
3

我真的很想知道當我們在python中導入一個模塊文件時會發生什麼。我的意思是它的過程,換句話說python會運行或檢查什麼?像__init__.py或sys.modules等。 例如我知道__init__.py是每個包中必需的文件,我想知道python這些文件對於導入時間有什麼作用? 請爲我點亮這個。在Python中導入模塊時會發生什麼?

回答

6

閱讀tutorial section about modulesimport statementimp module(特別是示例)的文檔,也可能是__import__ builtin的文檔。這應該讓你有很長的路要走。如果你還想知道更多,我會建議問一個具體的問題,這個問題有點寬泛。

編輯:再次閱讀您的問題後,您的問題有一個特定的部分,關於什麼__init__.py包。它基本上可以是空的或包含初始化代碼,該代碼將在導入該包時執行。詳情請參閱section about packages

__init__.py中,您還可以設置__all__,它定義在執行from yourpackage import *時將導入哪些符號。這在importing * from a package中有詳細說明。

+0

謝謝盧卡斯!現在我明白了,當我們導入一個模塊時,python首先在內置模塊中搜索它,如果它找不到它,python將它作爲.py模塊在sys.path中搜索,好嗎?我想知道什麼時候python在我們的包中找到這個模塊,它對/__init__.py文件有什麼作用?什麼時候它是一個空文件?我們可以在這個文件中輸入什麼樣的代碼?你能用例子來展示嗎?謝謝 – Deniz

+0

@Deniz'__init __。py'只要在導入包時就像其他模塊一樣執行。你可以做任何你想要的東西,就像其他任何Python模塊一樣。如果它是空的,它的功能就是將Python包與常規目錄區分開來的標記文件。 –