package的檔案階層系統
Sound/ Top-level package __init__.py Initialize the sound package Formats/ Subpackage for file format conversions __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... Effects/ Subpackage for sound effects __init__.py echo.py surround.py reverse.py ... Filters/ Subpackage for filters __init__.py equalizer.py vocoder.py karaoke.py ...
**__init__.py的必要性
為使Python能把這個目錄架構當作是一個package,上面的 __init__.py 這個檔是必須要的。這是為了要避免有些檔案目錄的名字是很普通的名字(例如 " string" ),這會讓直譯器誤認正確的module名稱而找不到在搜尋路徑中的module。在最簡單的例子裡, __init__.py 可以是一個空的檔案。但是你也可以讓這個檔來做一些package初始化的動作,或者設定
__all__
這個變數(稍後會再提)。
**import 敘述中的要點
值得注意的是當你使用
from package import item
這樣的敘述時,你所import的東西可以是一個package中的module(或者是subpackage),或者是在module裡面所定義的名稱,例如變數、類別或是函式等等。 import
敘述會先測試是否這個東西真的存在於這個package,如果沒有的話,會假設這是一個module然後試著導入(load)之。如果還失敗的話,就會引發一個 ImportError 的例外狀況(exception)。相反的是,當你使用
import item.subitem.subsubitem
這樣的敘述時,除了最後一個東西(item)以外,其餘的都必須是package。最後一個可以是 module 或是 package ,但是不能是一個定義在module裡面的類別、成員或函式。
沒有留言:
張貼留言