python() 模塊和包

一遵班、模塊的實(shí)現(xiàn)方式

實(shí)際上有兩種不同的方法可以在Python中定義模塊

  1. 模塊可以用Python本身編寫(xiě)勃痴。
  2. 模塊可以用C編寫(xiě)并在運(yùn)行時(shí)動(dòng)態(tài)加載盔憨,就像re正則表達(dá)式)模塊一樣馒胆。
  3. 一個(gè)內(nèi)置的模塊,本質(zhì)上已經(jīng)包含在了 Python 解釋器中缨称,像itertools模塊

以上情況下祝迂,模塊的內(nèi)容都以相同的方式訪問(wèn):使用import語(yǔ)句

模塊還可以分為

1.內(nèi)置模塊 睦尽,就是 python 解釋器中自帶的. 如: os re itertools

2.第三方模塊, 這些模塊需要自己安裝型雳,就像是在 Linux 系統(tǒng)中安裝軟件一樣当凡。

3.自定義模塊, 這個(gè)就是自己編寫(xiě)的模塊纠俭。

第三方模塊

即安裝外部模塊

1.pip3工具安裝

例如下面的示例是安裝用于執(zhí)行遠(yuǎn)程主機(jī)命令的模塊 paramiko

注意: pip3 是 bash 環(huán)境下的命令

$ pip3 install paramiko
2.源碼安裝

源碼安裝就是沿量,從網(wǎng)絡(luò)上下載沒(méi)有封裝的 python 文件的源碼,之后在本地執(zhí)行其源碼中的 setup.py 文件進(jìn)行安裝冤荆。

模塊的源碼一般都有一個(gè)主目錄朴则,主目錄中包含了一個(gè)到多個(gè)子目錄和文件。
但是主目錄下一定有一個(gè) setup.py 的文件钓简,這個(gè)是源碼安裝的入口文件乌妒,就是需要執(zhí)行這個(gè)文件并且傳入一個(gè) install 參數(shù)進(jìn)行源碼安裝汹想。
1)下載源碼包

wget https://files.pythonhosted.org/packages/4a/1b/9b40393630954b54a4182ca65a9cf80b41803108fcae435ffd6af57af5ae/redis-3.0.1.tar.gz

2)解壓源碼包

tar -xf redis-3.0.1.tar.gz

3)安裝

cd redis-3.0.1 
python3 setup.py

自定義模塊

#這個(gè)模塊里面有下面幾個(gè)對(duì)象
x = 10

li = ['shark',18]

def foo():
    return 20

class person():
    def __init__(self,name,age):
        self.name= name
        self.age=age

模塊調(diào)用的時(shí)候最好導(dǎo)入的模塊與被導(dǎo)入的處在同級(jí)目錄中

#同級(jí)目錄下,另一個(gè)py文件調(diào)用之前模塊內(nèi)的函數(shù)
import some_mod

print(some_mod.x)
print(some_mod.foo())

如果不在同級(jí)目錄

#如果不在同級(jí)目錄撤蚊,執(zhí)行文件中的寫(xiě)法

from page import some_mod     #如果處于執(zhí)行文件所在目錄的下一級(jí)目錄古掏,可用
print(some_mod.x)
print(some_mod.foo())

如果你的文檔的所在目錄每次的不一樣的時(shí)候就要學(xué)會(huì)找路徑

import sys
print(sys.path)   #查找路徑

當(dāng)你知道模塊和執(zhí)行文件的共同的目錄的路徑的時(shí)候,可以直接寫(xiě)死查詢的路徑

添加路:sys.path.insert(0,'/root/python_learning')

當(dāng)你要拿別人的文件來(lái)運(yùn)行的時(shí)候侦啸,但是你不知道他們執(zhí)行的文件放在那里槽唾,那么就要去找這個(gè)文件的路徑

import sys,os
#如果你無(wú)法再找到你的當(dāng)前文件的執(zhí)行的地點(diǎn)
#獲取到程序的基礎(chǔ)目錄
absp = os.path.abspath(__file__)
print(absp)
#print(sys.path)

輸出>>/root/python_learning/bin/some.py

=====================
import sys,os
#如果你無(wú)法再找到你的當(dāng)前文件的執(zhí)行的地點(diǎn)
#獲取到程序的基礎(chǔ)目錄
absp = os.path.abspath(__file__)       #絕對(duì)路徑
print(absp)
#獲取到程序的基礎(chǔ)目錄
BASE_DIR = os.path.dirname(os.path.dirname(absp))    
#dirname就是取得路徑的目錄,不要文件名
print(BASE_DIR)
#print(sys.path)

====================
取得路徑之后匹中;修改路徑
sys.path.insert(0,BASE_DIR)   
#先找到上一級(jí)目錄
from page import some_mod  
#再通過(guò)這個(gè)方法找到就可以了

模塊的內(nèi)置函數(shù)__file__

二夏漱、包

python2里面一定要有__init__.py才可以,__init__是名稱的存放空間
記住一點(diǎn):不論是導(dǎo)入包還是模塊顶捷,從左向右的順序來(lái)說(shuō)挂绰,最后一個(gè)點(diǎn)兒的左邊一定是一個(gè)包名,而不能是一個(gè)模塊名

image.png

如何寫(xiě)init這個(gè)文件

1.單獨(dú)導(dǎo)入包


image.png
__init__文件:
n = 10000
import package  <---注意
------------------------------
執(zhí)行文件show.py:

import show_mod
show_mod.x
show_mod.foo()

2.從包中導(dǎo)入下面的模塊

__init__
from package import some_mod
------------------------------
執(zhí)行文件
import x

3.從包或子的模塊中導(dǎo)入具體的對(duì)象

__init__
import package
---------------------
執(zhí)行文件
from package.some_mod  import foo     
 #最后一個(gè).的前面一定不能是模塊

from package.some_mod  import x  as y   # 把 x 導(dǎo)入后起個(gè)別名 y

內(nèi)置變量__name__

每個(gè) .py 文件都有一個(gè)變量名__name__服赎, 這個(gè)變量名的值會(huì)根據(jù)這個(gè)文件的用途不同而隨之變化葵蒂。

  • 當(dāng)文件作為模塊被其他文件使用時(shí),__name__ 的值是這個(gè)文件的模塊名

  • 當(dāng)文件作為腳本(就是作為可執(zhí)行文件)使用時(shí)重虑,__name__ 的值是字符串類型的 '__main__'

def foo():
    pass

def func():
    pass

def main():
    foo()
    func()

if __name__ == '__main__':      
 #只有做執(zhí)行文件的時(shí)候執(zhí)行下列的東西践付;做模塊的時(shí)候不會(huì)執(zhí)行
       main()

__name__當(dāng)單獨(dú)執(zhí)行的時(shí)候會(huì)為_(kāi)_main__

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缺厉,隨后出現(xiàn)的幾起案子永高,更是在濱河造成了極大的恐慌,老刑警劉巖提针,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件命爬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辐脖,警方通過(guò)查閱死者的電腦和手機(jī)饲宛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嗜价,“玉大人艇抠,你說(shuō)我怎么就攤上這事【米叮” “怎么了家淤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瑟由。 經(jīng)常有香客問(wèn)我媒鼓,道長(zhǎng),這世上最難降的妖魔是什么错妖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任绿鸣,我火速辦了婚禮担败,結(jié)果婚禮上毫目,老公的妹妹穿的比我還像新娘同诫。我一直安慰自己瑞驱,他們只是感情好漱竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布津滞。 她就那樣靜靜地躺著椭坚,像睡著了一般蔼啦。 火紅的嫁衣襯著肌膚如雪辣吃。 梳的紋絲不亂的頭發(fā)上动遭,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音神得,去河邊找鬼厘惦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哩簿,可吹牛的內(nèi)容都是我干的宵蕉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼节榜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼羡玛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宗苍,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稼稿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后讳窟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體让歼,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年挪钓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了是越。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碌上,死狀恐怖倚评,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馏予,我是刑警寧澤天梧,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站霞丧,受9級(jí)特大地震影響呢岗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一后豫、第九天 我趴在偏房一處隱蔽的房頂上張望悉尾。 院中可真熱鬧,春花似錦挫酿、人聲如沸构眯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惫霸。三九已至,卻和暖如春葱弟,著一層夾襖步出監(jiān)牢的瞬間壹店,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工芝加, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硅卢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓妖混,卻偏偏與公主長(zhǎng)得像老赤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子制市,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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

  • 模塊和包 一 模塊 1 什么是模塊祥楣? 常見(jiàn)的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件开财,文件名就是...
    go以恒閱讀 2,272評(píng)論 0 4
  • 模塊化編程 簡(jiǎn)介 Python 有時(shí)候稱為膠水語(yǔ)言,就是因?yàn)樗袕?qiáng)大的可擴(kuò)展性误褪,這個(gè)擴(kuò)展性就是用模塊實(shí)現(xiàn)的责鳍。 模塊...
    熱愛(ài)_生活閱讀 241評(píng)論 0 4
  • 自己以前整理的筆記,不太完整兽间,后續(xù)會(huì)不斷更新历葛。。嘀略。恤溶。 一、模塊(module) 瀏覽程序目錄會(huì)發(fā)現(xiàn)一個(gè)__pyca...
    alan2yang閱讀 535評(píng)論 0 0
  • Python在處理功能復(fù)用和功能顆粒度劃分時(shí)采用了類帜羊、模塊咒程、包的結(jié)構(gòu)。 模塊 模塊讼育,在Python可理解為對(duì)應(yīng)于一...
    LittleTrue閱讀 8,989評(píng)論 0 4
  • 女孩一般比男孩成熟的要早一些帐姻,所以在小學(xué)四五年級(jí)的時(shí)候班里好多女生都有了自己喜歡的人稠集,而我沒(méi)有,盡管班里年年考第一...
    高老莊的豬八戒閱讀 97評(píng)論 0 0