21-模塊和包

模塊和包

模塊

一個模塊就是一個包含python代碼的文件语淘。一個文件就是一個模塊

為什么要使用模塊镀钓?

1.現(xiàn)在程序開發(fā)文件比較大冤竹,都放在一個文件中維護(hù)不方便财饥,拆分成多個文件方便維護(hù)與管理
2.模塊可以增加代碼的重用率
3.模塊可以當(dāng)作命名空間

如何定義自己的模塊

模塊本身就是一個文件落竹,所有py代碼都可以在文件中直接書寫。不過我們開發(fā)共用模塊時剪况,最好在模塊中書寫以下內(nèi)容教沾。

變量(模塊中的屬性值)
函數(shù)(單獨(dú)的功能)
類(相似功能組合)
模塊測試代碼(臨時使用,被導(dǎo)入時不會執(zhí)行)

測試代碼:

測試代碼經(jīng)常在開發(fā)模塊時用于測試模塊的功能译断,但是測試代碼僅在開發(fā)和測試時使用授翻,被當(dāng)作模塊導(dǎo)入時不希望測試代碼運(yùn)行。需要使用name特殊變量來操作镐作。

if __name__  == '__main__':
    測試代碼區(qū)域(僅在吧當(dāng)前文件直接運(yùn)行時才會執(zhí)行測試代碼藏姐,當(dāng)作模塊導(dǎo)入時則不會執(zhí)行)


__name__  在直接運(yùn)行當(dāng)前文件時,結(jié)果為__main__

__name__  被當(dāng)作模塊導(dǎo)入文件時该贾,結(jié)果為 模塊名稱

模塊的導(dǎo)入方式

import 模塊 直接導(dǎo)入模塊

使用方法:

    模塊名.變量名
    模塊名.函數(shù)名

    模塊名.類名.方法名()
    模塊名.類名.屬性名

import 模塊 as 別名 直接導(dǎo)入模塊羔杨,并且為模塊起一個別名‘

使用方法:

    別名.變量名
    別名.函數(shù)名

    別名.類名.方法名()
    別名.類名.屬性名

from 模塊 import 某個函數(shù)或者類 直接導(dǎo)入模塊中的某個方法或者某個類或變量

使用方法:

    函數(shù)名()
    變量名
    類名.方法名()
    屬性名

from 模塊 import 函數(shù),函數(shù),類,類... 直接導(dǎo)入模塊中的多個方法和多個類和變量

使用方法:

    函數(shù)名()
    變量名
    類名.方法名()
    屬性名

from 模塊 import * 直接導(dǎo)入模塊中的所有方法和類和變量

使用方法:

    函數(shù)名()
    變量名
    類名.方法名()
    屬性名

注意事項(xiàng):如果采用from 導(dǎo)入的方式要確保模塊中的函數(shù)變量等內(nèi)容不能與系統(tǒng)的內(nèi)置函數(shù)同名杨蛋,否則會出現(xiàn)異常兜材。

模塊的存放

如果不想自己新建自定義的模塊文件夾,可以將我們自定義的模塊存放到 python目錄中的\Lib\site-packages中逞力。

搜索路徑就是python在加載模塊時候的查找路徑

1.獲取當(dāng)前模塊的搜索路徑

import sys

sys.path  獲取當(dāng)前搜索路徑的列表

2.將自定義的路徑添加到列表中

sys.path.append(自定義路徑)

模塊的加載順序

導(dǎo)入模塊操作的步驟:

1.檢測內(nèi)存中是否已經(jīng)加載過當(dāng)前模塊曙寡,如果加載過,直接使用加載的模塊
2.如果內(nèi)存中沒有加載當(dāng)前模塊寇荧,則搜索python的內(nèi)置模塊
3.如果當(dāng)前內(nèi)置模塊中中沒有該模塊举庶,根據(jù)搜索路徑查找并且加載模塊

包就是文件夾,他用于存放文件也就是模塊揩抡。包中也可以存放包

包的結(jié)構(gòu)

 包
 |---- __init__.py 包的標(biāo)志文件
 |---- 模塊1
 |---- 模塊2
 |---- 子包(文件夾)
 |-----|----__init__.py
 |---- |----子模塊1
 |---- |----子模塊2

包的導(dǎo)入和使用

import 包.模塊

使用方法:

    包.模塊.變量名
    包.模塊.函數(shù)名()
    包.模塊.類名.屬性名
    包.模塊.類名.方法名()

import 包.模塊 as 別名

使用方法:

    別名.變量名
    別名.函數(shù)名()
    別名.類名.屬性名
    別名.類名.方法名()

from 包.模塊 import 函數(shù)或者類或者屬性

使用方法:

    變量名
    函數(shù)名()
    類名.屬性名
    類名.方法名()

from 包.模塊 import *

使用方法:

    變量名
    函數(shù)名()
    類名.屬性名
    類名.方法名()

init.py文件中添加內(nèi)容(當(dāng)模塊用)

在此情況下可以將包當(dāng)作模塊直接導(dǎo)入使用

import 包

使用:
    包.變量名
    包.函數(shù)名()
    包.類名.屬性名
    包.類名.方法名()

import 包 as 別名

使用:
    別名.變量名
    別名.函數(shù)名()
    別名.類名.屬性名
    別名.類名.方法名()

from 包 import 函數(shù),類户侥,變量

使用:
    變量名
    函數(shù)名()
    類名.屬性名
    類名.方法名()

from 包 import *

使用:
    變量名
    函數(shù)名()
    類名.屬性名
    類名.方法名()

包和模塊的互相調(diào)用問題

如果在當(dāng)前模塊中需要調(diào)用其他模塊或者包的內(nèi)容時镀琉,可以直接使用import 導(dǎo)入對應(yīng)的包和模塊,就可以加載進(jìn)來使用蕊唐,import 會搜索包和模塊對應(yīng)的搜索路徑(sys.path)

import  模塊或者包

all特殊變量的用法

1.在init.py文件中屋摔,如果沒有all變量,那么使用from 包 import * 僅導(dǎo)入init.py中定義的方法和類及其他內(nèi)容

2.在init.py文件中替梨,如果定義all變量钓试,那么使用from 包 import * 則會導(dǎo)入all指定的所有模塊,而忽略init.py文件中的信息

__all__ = ['模塊','模塊','子包'副瀑。弓熏。。]   必須是列表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俗扇,一起剝皮案震驚了整個濱河市硝烂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铜幽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件串稀,死亡現(xiàn)場離奇詭異除抛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)母截,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門到忽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人清寇,你說我怎么就攤上這事喘漏。” “怎么了华烟?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵翩迈,是天一觀的道長。 經(jīng)常有香客問我盔夜,道長负饲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任喂链,我火速辦了婚禮返十,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘椭微。我一直安慰自己洞坑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布蝇率。 她就那樣靜靜地躺著迟杂,像睡著了一般刽沾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逢慌,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天悠轩,我揣著相機(jī)與錄音,去河邊找鬼攻泼。 笑死火架,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忙菠。 我是一名探鬼主播何鸡,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牛欢!你這毒婦竟也來了骡男?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤傍睹,失蹤者是張志新(化名)和其女友劉穎隔盛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拾稳,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吮炕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了访得。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙亲。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悍抑,靈堂內(nèi)的尸體忽然破棺而出鳄炉,到底是詐尸還是另有隱情,我是刑警寧澤搜骡,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布拂盯,位于F島的核電站,受9級特大地震影響浆兰,放射性物質(zhì)發(fā)生泄漏磕仅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一簸呈、第九天 我趴在偏房一處隱蔽的房頂上張望榕订。 院中可真熱鬧,春花似錦蜕便、人聲如沸劫恒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽两嘴。三九已至丛楚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憔辫,已是汗流浹背趣些。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贰您,地道東北人坏平。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像锦亦,于是被迫代替她去往敵國和親舶替。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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