Python中包吹散、模塊詳解

模塊:一個py文件就是一個模塊

當(dāng)代碼越來越多的時候台谊,將所有的代碼放入一個.py文件中會顯得難以維護蓉媳。解決辦法則是代碼分拆入不同的.py文件中,形成不同模塊锅铅,這樣做還能使得同名變量互不影響酪呻,需要注意的是,模塊名不應(yīng)與系統(tǒng)內(nèi)置函數(shù)重名盐须。

可以通過下面的方式導(dǎo)入模塊

import?module1

import?module2

import?module3

import?module1,module2,module3

這兩種方式的效果是一樣的玩荠,但是第一種可讀性比第二種好,推薦按照下面的順序?qū)肽K贼邓,并且一般在文件首部導(dǎo)入所有的模塊

導(dǎo)入模塊阶冈,就可重用這些函數(shù)和變量。一般用module_name.fun_name塑径,和module_name.var_name進行使用女坑。這樣的語義用法使模塊看起來很像類或者名字空間,可將module_name?理解為名字限定符统舀。模塊名就是文件名去掉.py后綴匆骗。

導(dǎo)入模塊中的屬性

單行導(dǎo)入

from?module import?name1,name2,name3

多行導(dǎo)入

from?module import?name1,name2,\

name3

導(dǎo)入全部屬性(由于容易覆蓋當(dāng)前名稱空間中現(xiàn)有的名字,所以一般不推薦使用誉简,適合模塊中變量名很長并且變量很多的情況)

from?module import?*

如果你不想某個模塊的屬性被以上方法導(dǎo)入碉就,可以給該屬性名稱前加一個下劃線

包:一個文件夾就是一個包,一個包中有多個模塊

不同的.py文件也可能同名闷串,這時候就可以考慮將其放入不同的文件夾中瓮钥,形成不同的,防止同名模塊的影響烹吵。

區(qū)別包和文件夾的重要特征就是包文件夾內(nèi)每一層目錄都有初始化文件__init__.py碉熄!

__init__.py可以是空文件,也可以有Python代碼年叮,因為__init__.py本身就是一個模塊具被,而它的模塊名就是包的名稱!所以導(dǎo)入一個包的時候只损,實際上導(dǎo)入的是這個包文件夾下面的__init__.py文件

一個帶__init__.py的目錄算一個包

可以這樣導(dǎo)入:

from?app.a import?a

from?app.b.b import?test

a.test()

test()

上面代碼表示:導(dǎo)入app包的子包a和子包b的屬性test一姿,然后分別調(diào)用test方法七咧。

python默認是使用ASCII編碼,可以指定編碼方式叮叹,如

#!/usr/bin/env python

#coding=utf-8

或者

#!/usr/bin/env python

# -*- coding:utf-8 -*-

4. 解決導(dǎo)入循環(huán)問題有下面兩個模塊艾栋,a.py和b.py

a.py

#!/usr/bin/env python

#coding=utf-8

import?b

if?__name__ ==?'__main':

print?'hello,I'm a'

1b.py

#!/usr/bin/env python

#coding=utf-8

import?a

if?__name__ ==?'__main':

print?'hello,I'm b'

在這里a嘗試導(dǎo)入b,而b也嘗試導(dǎo)入a蛉顽,導(dǎo)入一個先前沒有完全導(dǎo)入的模塊蝗砾,會導(dǎo)致導(dǎo)入失敗。解決辦法:移除一個導(dǎo)入語句携冤,把導(dǎo)入語句放到函數(shù)內(nèi)部悼粮,在需要的時候?qū)搿?/p>

b.py

#!/usr/bin/env python

#coding=utf-8

if?__name__ ==?'__main':

import?a

print?'hello,I'm b'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市曾棕,隨后出現(xiàn)的幾起案子扣猫,更是在濱河造成了極大的恐慌,老刑警劉巖翘地,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件申尤,死亡現(xiàn)場離奇詭異,居然都是意外死亡衙耕,警方通過查閱死者的電腦和手機昧穿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橙喘,“玉大人时鸵,你說我怎么就攤上這事√梗” “怎么了寥枝?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長磁奖。 經(jīng)常有香客問我,道長某筐,這世上最難降的妖魔是什么比搭? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮南誊,結(jié)果婚禮上身诺,老公的妹妹穿的比我還像新娘。我一直安慰自己抄囚,他們只是感情好霉赡,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幔托,像睡著了一般穴亏。 火紅的嫁衣襯著肌膚如雪蜂挪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天嗓化,我揣著相機與錄音棠涮,去河邊找鬼。 笑死刺覆,一個胖子當(dāng)著我的面吹牛严肪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谦屑,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼驳糯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了氢橙?” 一聲冷哼從身側(cè)響起酝枢,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎充蓝,沒想到半個月后隧枫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谓苟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年官脓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涝焙。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡卑笨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仑撞,到底是詐尸還是另有隱情赤兴,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布隧哮,位于F島的核電站桶良,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沮翔。R本人自食惡果不足惜陨帆,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望采蚀。 院中可真熱鬧疲牵,春花似錦、人聲如沸榆鼠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妆够。三九已至识啦,卻和暖如春负蚊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袁滥。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工盖桥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人题翻。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓揩徊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嵌赠。 傳聞我的和親對象是個殘疾皇子塑荒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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