1. 程式人生 > >python中的包

python中的包

com 實現 操作系統 模塊名 屬性 mon 組織 初始 util

包將有聯系的模塊組織在一起,可以避免模塊名稱沖突問題,讓應用組織結構更加清晰

假定我們的包的例子有如下的目錄結構:

Phone/
    _init_.py
    common_util.py
    Voicedta/
        _init_.py
        Post.py
        Isdn.py
    Fax/
        _init_.py
        G3.py
    Mobile/
        _init_.py
       Analog.py
       igital.py
    Pager/
        _init_.py
        Numeric.py

Phone是最頂層的包,Voicedta等是它的子包,可以這樣導入子包,如下:

import Phone.Mobile.Analog
Phone.Mobile.Analog.dial()

也可以使用from-import實現不同需求的導入

第一種方法只是導入頂層的子包,然後使用屬性/點操作符向下引用子包樹:

from Phone import Mobile
Mobile.Analog.dial(555-1212)

此外,還可以引入更多的子包

from Phone.Mobile import Analog
Analog.dial("555-1212")

事實上,可以一直沿子包的樹狀結構導入

from Phone.Mobile.Analog import dial
dial("555-1212")

在上邊的目錄結構中,有很多_init_.py文件。這些是初始化模塊,from-import語句導入子包時需要用到它。如果沒有用到,可以說是空文件。

包同樣支持 from-import all 語句

from package.module import *

然而,這樣的語句會導入哪些文件取決於操作系統的文件系統。所以在_init_.py中加入_all_變量。該變量包含執行這樣的語句時一個個導入的模塊的名字。它由一個模塊名字符串列表組成。

python中的包