Python2.7 模塊和包管理學(xué)習(xí)小結(jié) 01

概述

基于官方指南的6. Modules進(jìn)行學(xué)習(xí)的
https://docs.python.org/2/tutorial/modules.html#tut-standardmodules

根據(jù)例子逐個(gè)分析

例子思路

  • 根據(jù)原理的描述找包或者模塊時(shí)滥酥,系統(tǒng)先去找bulid-in搔扁,再在系統(tǒng)的python環(huán)境變量下找第三方的包文件澈蚌,然后再找其他的。
    這里我們只研究自己需要導(dǎo)入的包和模塊的關(guān)系。
  • 如果找自己的包或者模塊,是先在平級(jí)目錄找,然后再順著找下級(jí)目錄吆你。
  • 從上面的初步原理看,例子結(jié)構(gòu)設(shè)計(jì)如下:
sound/                          
      __init__.py
      top.py
      test_main.py
      effects/
              __init__.py
              echo.py
              surround.py              
              third/
                      __init__.py
                      third1.py             
      formats/                  
              __init__.py
              wavread.py
  1. 三層目錄結(jié)構(gòu)俊犯,頂層是sound妇多;中間是'effects'和formats;第三層是在effects目錄下增加一層third目錄燕侠。
  2. 每層均包含一個(gè)__init__.py文件者祖,文件初始內(nèi)容如下:
print "============== sound.__init__ =============="
print dir()
  1. 主執(zhí)行文件是test_main.py,初始內(nèi)容如下:
print "============== test_main.py =============="
print dir()         
def test():
         print "============== test_main.test =============="
if __name__ == '__main__'
          test()
  1. 其他的文件基本內(nèi)容如下:
print "============== surround.py =============="
print dir()
def test():
          print "============== surround.test =============="

echo.py比其他的多了一個(gè)test1函數(shù)绢彤,函數(shù)內(nèi)容跟test一模一樣七问,就是名字有變化。

  • 實(shí)驗(yàn)的思路是茫舶,先在頂層平行導(dǎo)入械巡,再向下導(dǎo)入(包括越級(jí));再從下往上導(dǎo)入饶氏;最后是驗(yàn)證二層平行目錄下的文件導(dǎo)入坟比。

頂層平行導(dǎo)入

就是sound目錄下,test_main.py導(dǎo)入并調(diào)用top.py的函數(shù)嚷往。

  1. test_main.py中葛账,直接調(diào)用top.test()會(huì)拋出異常,運(yùn)行結(jié)果如下:
============== test_main.py ==============
Traceback (most recent call last):
  File "E:\WorkSpace\Python\test\sound\test_main.py", line 6, in <module>
    top.test()
NameError: name 'top' is not defined
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
[Finished in 0.2s with exit code 1]
  1. 去掉調(diào)用top.test()的代碼皮仁,加上import top籍琳,也就是只導(dǎo)入不調(diào)用。
    我們會(huì)發(fā)現(xiàn)贷祈,代碼在導(dǎo)入時(shí)就已經(jīng)執(zhí)行了top的全局代碼趋急,而且多出了一個(gè)編譯后的top.pyc文件
    另外一個(gè)變化是test_main.py的dir()輸出势誊,多了一個(gè)導(dǎo)入的top元素呜达。
    修改后的代碼:
# 導(dǎo)入top
import top
# test_mian.py原始內(nèi)容
print "============== test_main.py =============="
print dir()
def test():
        print "============== test_main.test =============="
# main()
if __name__ == '__main__':
        test()

運(yùn)行結(jié)果:

============== top.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
============== test_main.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'top']
============== test_main.test ==============
[Finished in 0.2s]
  1. 我們?cè)诘?步的基礎(chǔ)上,增加top.test()的調(diào)用粟耻,可以正常運(yùn)行查近。
    運(yùn)行結(jié)果:
============== top.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
============== top.test ==============
============== test_main.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'top']
============== test_main.test ==============
[Finished in 0.2s]
  1. 我們將第上面的import top替換成from top import test。我們先刪除調(diào)用test()函數(shù)的代碼挤忙,先僅僅實(shí)驗(yàn)一下導(dǎo)入的情況霜威。
    基礎(chǔ)代碼如下:
# 導(dǎo)入top
from top import test
# test_mian.py原始內(nèi)容
print "============== test_main.py =============="
print dir()
def test():
        print "============== test_main.test =============="
# main()
if __name__ == '__main__':
        test()

運(yùn)行結(jié)果:

============== top.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
============== test_main.py ==============
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'test']
============== test_main.test ==============
[Finished in 0.2s]

從運(yùn)行結(jié)果看,跟import top方式導(dǎo)入結(jié)果基本一致册烈。唯一區(qū)別的地方在于dir()顯示戈泼,from方式導(dǎo)入的是test,并沒有導(dǎo)入top;而import方式導(dǎo)入的是top大猛,而沒有top下面的test扭倾。
另外,如果是from xx import *方式的話挽绩,top里面有多少函數(shù)或者類都會(huì)載入膛壹。

內(nèi)容太長(zhǎng),網(wǎng)頁無法保存琼牧,所以強(qiáng)行拆分成幾篇文章記錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恢筝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巨坊,更是在濱河造成了極大的恐慌撬槽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趾撵,死亡現(xiàn)場(chǎng)離奇詭異侄柔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)占调,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門暂题,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人究珊,你說我怎么就攤上這事薪者。” “怎么了剿涮?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵言津,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我取试,道長(zhǎng)悬槽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任瞬浓,我火速辦了婚禮初婆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猿棉。我一直安慰自己磅叛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布铺根。 她就那樣靜靜地躺著宪躯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪位迂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音掂林,去河邊找鬼臣缀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泻帮,可吹牛的內(nèi)容都是我干的精置。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼锣杂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脂倦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起元莫,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤赖阻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后踱蠢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火欧,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年茎截,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苇侵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡企锌,死狀恐怖榆浓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撕攒,我是刑警寧澤陡鹃,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站打却,受9級(jí)特大地震影響杉适,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柳击,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一猿推、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捌肴,春花似錦蹬叭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饥悴,卻和暖如春坦喘,著一層夾襖步出監(jiān)牢的瞬間盲再,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工瓣铣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留答朋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓棠笑,卻偏偏與公主長(zhǎng)得像梦碗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蓖救,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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