python 包的定義,結構,匯入處理程序

來源:互聯網
上載者:User

假設你想設計一個模組集(也就是一個python包)來統一處理音效檔和聲音資料。通常由它們的擴充有不同的聲音格式,例如:WAV,AIFF,AU),所以你可能需要建立和維護一個不斷增長的各種檔案格式之間的轉換的模組集合。並且可能要執行聲音資料處理(如混合,添加回聲,應用平衡功能),所以你寫一個永無止境的流模組來執行這些操作:模組設計的包如下:

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
             ...

當匯入包以後,Python通過sys.path中的目錄來尋找包的子目錄。 每一個包都必須有__init__.py檔案,這樣做是為了防止某些目錄有一個共同的名字。在最簡單的情況下,__ init__.py可以只是一個空檔案,但它也可以執行包的初始化代碼,包括設定__all__變數,稍後介紹。 我們可以從包中匯入單個模組,

例如: import sound.effects.echo 這會載入子模組sound.effects.echo。它必須引用全名。 sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

另外一種匯入子模組的方法: from sound.effects import echo 這樣就載入了echo子模組,沒有包括包的首碼,因此它可以用作如下: echo.echofilter(input, output, delay=0.7, atten=4)

或者可以from sound.effects.echo import echofilter echofilter(input, output, delay=0.7, atten=4)

請注意,如果你使用包匯入一個子模組(或子包),像一個函數,類或變數。 import語句首先測試匯入的對象是否包中定義,如果沒有,它假定這是一個模組,並嘗試載入它。如果還沒有找到,則會引發一個ImportError異常。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.