因此,我是一個初學者到python /編程,並在教程中找到了這個代碼,我很難理解。我所做的是,我去了我的python目錄(它包含所有模塊)的site-packages文件夾。在那裏我可以找到目錄結構爲: -在python中調用模塊
pythonds/basic/stack.py
文件stack.py在其中有一個「class Stack」。 所以我正確解釋/關聯導入命令到這個目錄結構?另外,無論何時在python中發生這樣長的模塊鏈接,都可以通過這種方式來理解。
因此,我是一個初學者到python /編程,並在教程中找到了這個代碼,我很難理解。我所做的是,我去了我的python目錄(它包含所有模塊)的site-packages文件夾。在那裏我可以找到目錄結構爲: -在python中調用模塊
pythonds/basic/stack.py
文件stack.py在其中有一個「class Stack」。 所以我正確解釋/關聯導入命令到這個目錄結構?另外,無論何時在python中發生這樣長的模塊鏈接,都可以通過這種方式來理解。
並非所有的時間。
除非您必須手動調試模塊或進行安裝,否則最好不要試圖將目錄結構與模塊路徑進行比較。
有時,您的PYTHONPATH將被擴展爲包含子目錄site-packages
,然後會有一個額外的子目錄。
其他時候,可以有一個__init__.py
文件中pythonds/basic/
目錄(有可能的是),可以包含
from .stack import Stack
在這種情況下,進口路徑可能是
from pythonds.basic import Stack
謝謝Evert。我在目錄中檢查了它,發現你寫的是什麼。但是,爲了好奇心,我有一個問題,爲什麼我們在基本目錄中有這樣一個__init__文件?我的意思是當這個「從pythonds.basic.stack導入堆棧」工作完全fien,那麼爲什麼我們再次需要在基本目錄中創建一個額外的__init__文件?任何直覺? – Sunita
'__init __。py'在第一次使用時即被初始化_package_(即從它導入的東西)。 – Alfe
'__init __。py'表示當前目錄可以被當作一個Python包。你可以有一個空的'__init __。py'文件,並將整個目錄(或者至少所有'.py'文件)轉換爲一個包。由於'basic /'子目錄不會被視爲一個包,所以如果沒有'pythonds/basic /'目錄中的'__init __。py'文件,您將無法執行'import pythonds.basic'。但爲此,您可以更好地閱讀上面kkuilla鏈接的文檔。 – Evert
你的理解是對的。
import pythonds.basic.stack
這將使您的腳本訪問模塊中的所有類。而
from pythonds.basic.stack import Stack
將使您的腳本只能訪問堆棧類。
在命令行中,你可以這樣做:
C:\Python27\Lib>pip intall pythonds
那麼這個模塊可以工作。
http://docs.python.org/3/tutorial/modules.html – kkuilla
爲什麼你想知道?出於好奇,或者你想在'site-packages'中手動擺弄;後者是非常不推薦的。 – Evert