Module & Package in Python

環(huán)境:python 2.7.11,python3.5基本相同瑞眼。

Contents

[TOC]

Python Module

模塊可以包括函數(shù)定義以及一些語句(用于初始化模塊请梢,因此只在第一次import語句被執(zhí)行時(shí)調(diào)用)啦吧。
模塊擁有私有的符號表(作為模塊內(nèi)所有函數(shù)的全局符號表)勤讽,所以在編寫模塊時(shí)可以不用擔(dān)心與用戶的全局變量發(fā)生命名沖突的情況腹泌。

Import Module

# ./fibo.py
# ./main.py

# main.py
from fibo import fib

or

import fibo 
fib = fibo.fib

值得一提的是粟关,在module中也可以定義__all__(見下文)
另外除非在__all__加入,import會自動忽略以_開頭的函數(shù)亲善。

Packages

包是一種組織模塊命名空間的方式设易。

For example, the module name A.B designates a submodule named B in a package named A.

example

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

含有__init__.py文件的文件夾才會被Python認(rèn)為是一個(gè)包。__init__.py 可以為空蛹头,也可以有用于初始化包的語句顿肺。

When import individual modules from the package, it must be referenced with its full name.

Import:

import sound.effects.echo

When Use:

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

import * from a package

When

from sound.effects import *

理想情況下戏溺,這個(gè)語句會遍歷整個(gè)文件夾,然后import全部模塊挟冠。但是于购,這不是python的實(shí)現(xiàn)方式。
因此需要在__init__.py中顯式地定義名為__all__的list知染。此時(shí)上述語句會import``__all__中的所有模塊肋僧。

all = ["echo", "surround", "reverse"]

If __all__ is not defined, the statement from sound.effects import * does not import all submodules from the package sound.effects into the current namespace; it only ensures that the package sound.effects has been imported (possibly running any initialization code in __init__.py) and then imports whatever names are defined in the package.

**This **includes:

  • any names defined (and submodules explicitly loaded) by __init__.py.
  • any submodules of the package that were explicitly loaded by previous import statements.

For example:

import sound.effects.echo
import sound.effects.surround
from sound.effects import *

In this example, the echo and surround modules are imported in the current namespace because they are defined in the sound.effects package when the from...import statement is executed.

Intra-package References

When packages are structured into subpackages (as with the sound package in the example), you can use absolute imports as well as relative imports

Explicit relative import

from . import echo
from .. import formats
from ..filters import equalizer

Reference

To learn more, look up the DOCs @here

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市控淡,隨后出現(xiàn)的幾起案子嫌吠,更是在濱河造成了極大的恐慌,老刑警劉巖掺炭,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辫诅,死亡現(xiàn)場離奇詭異,居然都是意外死亡涧狮,警方通過查閱死者的電腦和手機(jī)炕矮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來者冤,“玉大人肤视,你說我怎么就攤上這事∩娣悖” “怎么了邢滑?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愿汰。 經(jīng)常有香客問我困后,道長,這世上最難降的妖魔是什么衬廷? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任摇予,我火速辦了婚禮,結(jié)果婚禮上吗跋,老公的妹妹穿的比我還像新娘趾盐。我一直安慰自己,他們只是感情好小腊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著久窟,像睡著了一般秩冈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斥扛,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天入问,我揣著相機(jī)與錄音丹锹,去河邊找鬼。 笑死芬失,一個(gè)胖子當(dāng)著我的面吹牛楣黍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棱烂,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼租漂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颊糜?” 一聲冷哼從身側(cè)響起哩治,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衬鱼,沒想到半個(gè)月后业筏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸟赫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年蒜胖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛蚤。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡台谢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霉颠,到底是詐尸還是另有隱情对碌,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布蒿偎,位于F島的核電站朽们,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诉位。R本人自食惡果不足惜骑脱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苍糠。 院中可真熱鬧叁丧,春花似錦、人聲如沸岳瞭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞳筏。三九已至稚瘾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姚炕,已是汗流浹背摊欠。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工丢烘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人些椒。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓播瞳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親免糕。 傳聞我的和親對象是個(gè)殘疾皇子赢乓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容