日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python的模块、包、库区别。导入包/模块的方式

發(fā)布時(shí)間:2025/4/5 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的模块、包、库区别。导入包/模块的方式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

直接進(jìn)入主題,如果覺(jué)得文章可以,記得點(diǎn)點(diǎn)贊和關(guān)注,我主要會(huì)寫一些在學(xué)習(xí)過(guò)程中遇到的困難

模塊

為了使代碼更容易維護(hù),提高代碼重用價(jià)值:可以將一組相關(guān)功能的代碼寫入一個(gè)單獨(dú)的.py文件中;使別人導(dǎo)入使用;這個(gè).py文件就被稱作是一個(gè)模塊

當(dāng)我們使用 import 語(yǔ)句導(dǎo)入模塊時(shí),Python解釋器首先會(huì)去內(nèi)置名稱空間中尋找,即判斷導(dǎo)入的模塊是不是內(nèi)置模塊(例如time模塊就是Python內(nèi)置模塊),然后再去 sys.path 列表中定義的路徑從前往后尋找 .py文件
如下是在個(gè)人筆記本上輸出的 sys.path列表:

>>> import sys >>> sys.path ['', 'D:\\Pycharm\\pychon_jieshiqi\\python37.zip', 'D:\\Pycharm\\pychon_jieshiqi\\DLLs', 'D:\\Pycharm\\pychon_jieshiqi\\lib', 'D:\\Pycharm\\pychon_jieshiqi', 'D:\\Pycharm\\pychon_jieshiqi\\lib\\site-packages'] >>>

包是一個(gè)有層次的文件目錄結(jié)構(gòu),它定義了由相關(guān)的(或者說(shuō)是在這個(gè)模塊里需要調(diào)用另一個(gè)模塊)n個(gè)模塊或n個(gè)子包。包含__init__.py文件的目錄,這個(gè)目錄下一定的有則會(huì)個(gè)__init__.py文件和其他模塊或子包。在調(diào)用這個(gè)包時(shí)都會(huì)執(zhí)行package 包下和子包下的 init 文件。

現(xiàn)在有如下目錄結(jié)構(gòu):
├─ROOT
│ ├─pk_1
│ │ ├─__init__.py
│ │ ├─m1.py
│ ├─pk_2
│ │ ├─__init__.py
│ │ └─m2.py
│ ├─__init__.py
│ ├─test.py
pk_1 和 pk_2 包中的 init.py 文件都為空,ROOT包下的 test.py 想要使用 pk_1 包下 m1模塊中的方法,可以使用如下語(yǔ)句:

#test.py from pk_1 import m1 m1.fun_1() # fun_1() 為m1模塊中的方法

但是使用如下語(yǔ)句,就會(huì)拋出異常:

#test.py from pk_1 import * m1.fun_1() # 異常信息: NameError: name 'm1' is not defined ***************************************************************** ***************************************************************** #test.py import pk_1 pk_1.m1.fun_1() # 異常信息: AttributeError: module 'pk_1' has no attribute 'm1'

這時(shí)候可以在 pk_1 包中的__init__.py 中 進(jìn)行 包提升(在包中提升導(dǎo)入權(quán)限),pk_1 包的 init.py 文件內(nèi)容如下:

#pk_1包下的_init_.py from pk_1.m1 import fun_1

然后在 test.py 文件中可以直接通過(guò)包名引入方法:

1)

from pk_1 import fun_1 # 或 from pk_1 import * fun_1()

2)

import pk_1 pk_1.fun_1()

這個(gè)就是 包中 init.py 文件存在的意義,可以將相關(guān)的導(dǎo)入語(yǔ)句 或 提升導(dǎo)入權(quán)限的語(yǔ)句 寫在 init.py文件中,這樣使用者就不需要了解包中的內(nèi)部結(jié)構(gòu),可以直接通過(guò)包名 調(diào)用該包(package)中某個(gè)模塊的方法~

庫(kù)

參照其他編程語(yǔ)言的一個(gè)喊法;完成一定功能的代碼集合,具體表現(xiàn)可以是一個(gè)模塊,也可以是包。庫(kù)可以理解為倉(cāng)庫(kù),例如標(biāo)準(zhǔn)庫(kù),則是一組很多的想numpy,matplotlib等這么多的包,或者模塊。

總結(jié):

模塊<包<庫(kù)

導(dǎo)入包/模塊的方式:(這一塊的知識(shí)點(diǎn)比較瑣碎,需要自己多做實(shí)驗(yàn)慢慢體會(huì)掌握)

import M #導(dǎo)入單個(gè)模塊import P.M #導(dǎo)入P包里的某單個(gè)模塊,會(huì)自動(dòng)執(zhí)行P里面的__init__.py文件import P.sub_p.M #導(dǎo)入P包里的子包sub_p里的單個(gè)M模塊,會(huì)自動(dòng)執(zhí)行P里的__init__.py和sub_p里的__init__.py文件import M1,M2 #導(dǎo)入多個(gè)模塊,或者用兩次import補(bǔ)充:如果導(dǎo)入的是一個(gè)包:①默認(rèn)不會(huì)導(dǎo)入任何模塊②解決方案:②.1 在__init__.py文件中,再次導(dǎo)入需要的模塊(該模塊需要指定一個(gè)絕對(duì)路徑,例如加上包名)②.2 應(yīng)該以from ... import ... 的形式導(dǎo)入(包>模塊>模塊資源),導(dǎo)入模塊資源時(shí)也可以是多個(gè)。注意導(dǎo)入順序:從from到import的順序應(yīng)該是包>模塊>模塊資源這樣從大到小的順序

總結(jié)

以上是生活随笔為你收集整理的python的模块、包、库区别。导入包/模块的方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。