模塊:當編寫更大的應用程序時,所有的代碼肯定會分成多個文件,這樣便于維護,另外已經編寫好的函數和對象在被多個程序中使用時,不用把函數和對象拷貝到每個程序中。
模塊支持以上功能,在Python中,一個.py文件就構成一個模塊,通過模塊,你可以調用其它文件中的程序。
模塊名稱:fibo.py
路徑:E:/djcode/untitled1 __author__ = 'Administrator'2 def laugh():3 PRint 'HaHaHaHa'
引入模塊:
1 >>> import fibo #引入了fibo模塊2 >>> fibo.Laugh()3 HaHaHaHa4 >>> fibo.__name__5 'fibo'6 7 >>> from fibo import laugh #引入了fibo模塊,此種引入方式fibo未定義8 >>> Laugh()9 HaHaHaHa
Python會在以下路徑中搜索它想要尋找的模塊:
程序所在的文件夾
標準庫的安裝路徑
操作系統環境變量PYTHONPATH所包含的路徑
如果你有自定義的模塊,或者下載的模塊,可以根據情況放在相應的路徑,以便Python可以找到。
內置函數dir()用來找出模塊中定義了哪些名字,它返回一個排好序的字符串列表:
1 >>> import fibo2 >>> dir(fibo)3 ['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'Laugh',]
注意它列出了所有類型的名稱: 變量、 模塊、 函數等。
包:可以將功能相似的模塊放在同一個文件夾中,構成一個模塊包。該文件夾中必須包含一個__init__.py的文件,提醒Python,該文件夾為一個模塊包,__init__.py可以是一個空文件。
目錄結構:
Untitled(E:/djcode/untitled)
Directory1
D1fibo.py
Package1
__init__.py
PK1fibo.py
PK2fibo.py
PK3fibo.py
PK4fibo.py
PK5fibo.py
fibo.py
在E:/djcode/untitled目錄下引入fibo.py模塊
1 >>> import fibo #導入Python解釋器的是fibo這個模塊名稱,若訪問fibo模塊中的函數需通過模塊名稱來訪問2 >>> fibo.laugh()3 HaHaHaHa4 5 >>> from fibo import laugh #導入Python解釋器的是fibo這個模塊內所有的函數和對象,但不會導入fibo這個模塊名稱,因此fibo將未定義6 >>> laugh()7 HaHaHaHa
在E:/djcode/untitled目錄下引入包(Package1)下的PK1fibo.py等模塊:
1 >>> import Package1.PK1fibo 2 >>> Package1.PK1fibo.laugh() 3 PK1fiboHaHaHaHaHaHa 4 5 >>> from Package1 import PK1fibo,PK2fibo,PK3fibo,PK4fibo,PK5fibo 6 >>> PK1fibo.laugh() 7 PK1fiboHaHaHaHaHaHa 8 9 >>> from Package1 import * #當包(Package1)下的__init__.py文件為空時,
該導入模塊等同于from Package1 import PK1fibo,PK2fibo,PK3fibo,PK4fibo,PK5fibo,
但當前__init__.py文件中包含有__all__ = ["PK1fibo","PK4fibo","PK5fibo"],
此時等同于from Package1 import PK1fibo, PK4fibo,PK5fibo10 >>> PK1fibo.laugh()11 PK1fiboHaHaHaHaHaHa12 >>> PK2fibo.laugh()13 Traceback (most recent call last):14 File "<input>", line 1, in <module>15 NameError: name 'PK2fibo' is not defined
在E:/djcode/untitled目錄下引入目錄(Directory1)下的D1fibo.py模塊:
1 >>> import sys2 >>> sys.path.append("Directory1")3 >>> from D1fibo import laugh4 >>> laugh()5 D1fiboHaHaHaHaHaHa
在E:/djcode/untitled/ Directory1目錄下引入fibo.py模塊:
1 >>> import sys2 >>> sys.path.append("..")3 >>> from fibo import laugh4 >>> laugh()5 HaHaHaHa
from module import function
import module
__init__.py
新聞熱點
疑難解答