亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python學(xué)習(xí)之包與模塊詳解

 更新時間:2022年03月19日 09:07:33   作者:渴望力量的哈士奇  
在了解完面向?qū)ο笈c異常處理機制之后,本文將詳細為大家介紹Python中的包與模塊,文中的示例講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下

大家好,學(xué)完面向?qū)ο笈c異常處理機制之后,接下里我們要學(xué)習(xí) 包與模塊 。首先我們要了解什么是包?什么是模塊?接下來我們還要學(xué)習(xí) 如何自定義創(chuàng)建包、自定義創(chuàng)建模塊以及如何導(dǎo)入包與模塊。最后我們在學(xué)習(xí)如何使用第三方包,第三方包就是別人開發(fā)好的包。關(guān)于包的課程學(xué)完之后,就是文件的讀寫,通過學(xué)習(xí)這方面的知識,可以讓我們動態(tài)的創(chuàng)建文件、編輯文件、閱讀文件。當我們具備文件的基礎(chǔ)讀寫能力之后,我們就可以學(xué)習(xí)一些相關(guān)的模塊了,如 yaml文件模塊、json文件與模塊、日志模塊....

接下來我們就開始學(xué)習(xí) 包與模塊 ,通過學(xué)習(xí)該部分之后,我們就可以靈活運用 Python 在各個領(lǐng)域中了。比如 web 開發(fā),我們就可以使用 web 相關(guān)的包與模塊。有很多人在為 python 做貢獻,他們貢獻的就是這些 包與模塊。而之前我們學(xué)習(xí)的課程,也都是在為我們學(xué)習(xí)包與模塊在做準備,一句話總結(jié),學(xué)會 包與模塊 是真正學(xué)會 Python 的重要標志。

什么是 Python 的包與模塊

  • 包的定義:簡單粗暴的解釋,當一個文件夾內(nèi)包含一個 __init__.py 文件時我們就可以認為它是一個包;如果該文件夾下還有子文件夾且該子文件夾中也有一個 __init__.py 文件,我們就可以認為它是包中還有包。
  • 模塊的定義:任何 *.py 格式的文件都可以當作模塊,我們可以使用 import 關(guān)鍵字對其執(zhí)行導(dǎo)入操作。

我們都知道每一個模塊下都是 Python 的函數(shù),所以我們使用一個包或者模塊,最終的目的就是使用他們內(nèi)部函數(shù)的功能幫助我們實現(xiàn)業(yè)務(wù)需要。

一個包里,可以有一個或多個模塊;通過調(diào)用 包 下面某個 模塊 的某個函數(shù)去執(zhí)行,這就是我們使用 Python包或模塊的目的

包的身份證

__init__.py 文件時每一個 python 包必須存在的文件,只有存在 __init__.py 文件的目錄,python 解釋器才會認為這是一個 包 ;如果沒有該文件, python 解釋器只會認為這是一個普通的文件夾。示意圖如下:

從上圖我們看出來,除了 __init__.py 文件之外,包的目錄文件圖標有個圓形的小圓點式的圖案。而普通文件夾沒有任何標識。試想一下,如果我們在 python_package_test 文件夾內(nèi)創(chuàng)建一個 __init__.py 文件會怎樣?44944…

如何創(chuàng)建包

其實已經(jīng)不再需要多說什么了,首先創(chuàng)建一個文件夾。然后在文件夾中創(chuàng)建一個 python 包的身份證文件 __init__.py 即可;__init__.py 文件可以空空如也,什么都不用寫,只要保證該文件的名字是 __init__.py 即可。 Python 解釋就會認為這是一個包,之后我們就可以在包里書寫任意的腳本(也就是模塊),非常的簡單。不過我們還需要創(chuàng)建包的良好規(guī)范:

  • 首先要有一個主題,功能明確,同時也要方便使用;方便別人看一眼名字就知道是否需要使用你這個包。
  • 其次層次要分明,一個包內(nèi)可以有很多各模塊或者子包。它們之間的關(guān)系要明確,這也為后期維護代碼起到很好的輔助作用。

除了上述的創(chuàng)建文件夾之后再創(chuàng)建包的身份文件 __init__.py 之外,Pycharm 還可以直接通過 new ---> Python Package 的方式,直接創(chuàng)建一個包。示意圖如下:

創(chuàng)建包的小練習(xí)

接下來我們嘗試創(chuàng)建一個 animal 的包,同時在 animal 包下創(chuàng)建一個 cat 包 和 dog 包。然后分別在 cat 包與 dog 包中創(chuàng)建一個 action.py 模塊,并且在各自的 action.py 模塊定義 eat()、jump()、run() 函數(shù)。

同樣的方法在 dog 子包內(nèi)創(chuàng)建 action.py 模塊,內(nèi)容如下:

# coding:utf-8


def eat():
    return '狗愛啃骨頭'


def run():
    return '貓會跑'


def jump():
    return '貓會跳'

這里我們創(chuàng)建了 cat 與 dog 兩個子包,實際上真正有功能的是兩個子包中的 action.py 模塊。在這兩個模塊內(nèi),各有三個函數(shù) eat()、run()、jump()。所以我們的最終目的是使用分別來自 cat 與 dog 兩個子包的 action.py 模塊的三個函數(shù),接下來我們就看一下如果導(dǎo)入、調(diào)用這兩個子包與使用子包內(nèi)的函數(shù)。

包的導(dǎo)入 - import

如果想要使用一個 包 或者 模塊 ,就需要先將其導(dǎo)入到我們當前的腳本中。在學(xué)習(xí) python 腳本結(jié)構(gòu) 的章節(jié),我們曾經(jīng)介紹過,在腳本的頂部為 頭部注釋 區(qū)域;接下來就是 導(dǎo)入?yún)^(qū)域 ,導(dǎo)入?yún)^(qū)域 就是將我們需要的包、模塊導(dǎo)入到我們當前的腳本中。接下來 我們看一下 包的導(dǎo)入 import 關(guān)鍵字的用法:

# 用法:
import package

# 參數(shù):
# package:被導(dǎo)入的包的名字

# 要求:
# 只有 python 包才能被 impor 關(guān)鍵字捕獲并導(dǎo)入,也就是說 python 包中必須要有 __init__.py 這個文件
# 并且 import 只會拿到當前對應(yīng)包下的 __init__.py 中的功能或當前模塊下的功能

關(guān)于 import 只會拿到當前對應(yīng)包下的 __init__.py 中的功能或當前模塊下的功能 可能不是那么好理解,接下來 我們在 Pycharm 做個小實驗,加深一下理解。

首先打開 Terminal 終端,輸入 python 啟動 Python 解釋器。然后導(dǎo)入 animal 包,然后使用 animal 包下的 cat子包。如下圖:

這里發(fā)現(xiàn)報錯了,屬性錯誤 animal 里沒有 cat 這個屬性;這是為什么?cat 這個子包 確實在我們的 animal 包下啊。再做個小實驗,我們在 animal 包下的 __init__.py 文件內(nèi)書寫一些內(nèi)容。

然后退出我們的 python 解釋器再進入,為什么要退出呢?這是因為我們的包的當前結(jié)構(gòu)發(fā)生了變化,所以需要退出再重新進入,否則 在 Treminal 終端執(zhí)行的仍然是之前的結(jié)果。這個時候我們再重新 import animal 的包,然后執(zhí)行以下看看。

這時候在結(jié)合剛剛我們說的 import 只會拿到當前對應(yīng)包下的 __init__.py 中的功能或當前模塊下的功能 , 如果想要調(diào)用一個包中或者模塊中的函數(shù)函數(shù)功能,只需要通過包或者模塊的名稱 + . 的形式去調(diào)用它的函數(shù)名就可以了。這個方法是不是和我們面向?qū)ο蟮氖褂梅绞胶芟嗨颇兀?/p>

現(xiàn)在又有一個問問題了,剛剛我們導(dǎo)入的是 animal 包以及使用了 __init__.py 文件中的功能,那么我們我們該如何使用 animal 包下的 cat / dog 子包中的函數(shù)功能呢? 繼續(xù)往下,我們看看 模塊的導(dǎo)入 部分

模塊的導(dǎo)入 - from…import

接下來我們學(xué)習(xí)如何通過包導(dǎo)入對應(yīng)的模塊,這一次我們需要 from、import 兩個關(guān)鍵字來配合了;當這兩個關(guān)鍵字配合起來之后,就可以通過某個包找到對應(yīng)的模塊。接下來 我們看一下 from...import... 的用法

# 用法:
from package import module

# 參數(shù):
# package:要導(dǎo)入的包名
# module:包中的目標模塊

# from package import module 的意思就是 從當前的包中導(dǎo)入某個模塊


# 示例如下:

from animal import dog
dog.run()

# 通過 from ... import ... 直接找到了 dog 模塊
# 所以只需要使用 dog 模塊 直接用 . 的方式找到里面的 run 方法就可以執(zhí)行了

接下來我們嘗試 參照上文的 animal 包 導(dǎo)入 dog 的子包 調(diào)用里面的 run 函數(shù),內(nèi)容如下:

導(dǎo)入子包及子包函數(shù)的調(diào)用

這里我們發(fā)現(xiàn)了一個問題,兩個子包下面都有 action 模塊,當我們分別 導(dǎo)入調(diào)用的時候會被覆蓋,有沒有什么辦法讓我們同時導(dǎo)入兩個子包的 action 模塊,分別可以調(diào)用但是互不影響呢?這就需要借助到我們的as 關(guān)鍵字 了。 在我們學(xué)習(xí)異常的時候,利用 as 關(guān)鍵字 關(guān)鍵字將捕獲的異常進行一個起別名的操作,在這里我們依然可以對我們導(dǎo)入的模塊起別名。如下圖

現(xiàn)在我們是直接通過導(dǎo)入模塊來調(diào)用 action 模塊下的函數(shù),那可不可以直接調(diào)用函數(shù)來使用的呢?嘗試一下:

導(dǎo)入主包及主包的函數(shù)調(diào)用

首先我們在主包 animal 的子包同級路徑下創(chuàng)建一個 main.py 文件,并定義一個 main 函數(shù),然后再進行調(diào)用。內(nèi)容如下:

# coding:utf-8


def animal():
    return '這是一個 animal 包下子包同級路徑下的模塊的函數(shù)'

然后我們調(diào)用該 main.py 文件的 animal 函數(shù)

導(dǎo)入的包與子包模塊之間過長如何優(yōu)化

我們來看一下 導(dǎo)入 animal 包下 cat 子包 的 action 模塊的 eat() 函數(shù)的導(dǎo)入

前文我們提到過 import 只會拿到當前對應(yīng)包下的 __init__.py 中的功能或當前模塊下的功能 ,那么我們是否可以把 cat 與 dog 子包中的函數(shù)導(dǎo)入到 animal 包下的 __init__.py ?

接下來 我們嘗試一下 在 animal 包 同級別下創(chuàng)建一個 animal_test.py 文件,然后在 animal_test.py 文件內(nèi)導(dǎo)入 子包獲取其函數(shù)。

注意:這里的 animal_test.py 腳本 需要與 animal 包處于同一級別的文件加下,才可以導(dǎo)入我們定義好的 __init__.py 文件的函數(shù)功能;如果不在同一個文件的級別下,導(dǎo)入是不成功的,大家可以自己手動試一下。

強大的第三方包

上面我們學(xué)習(xí)了什么是 python 的包,以及如何創(chuàng)建一個包,并通過導(dǎo)入的方法使用我們的包與模塊。在上面對包的使用相當于是我們自己開發(fā)自己使用,屬于一種自產(chǎn)自銷的模式。而接下來我們要學(xué)習(xí)使用他人開發(fā)好的第三方包來幫助我們高效的工作,學(xué)完這一小章節(jié)我們就可以從浩瀚的第三方包選擇我們需要的包來幫助我們自己完成我們想要的功能。

比如爬蟲的包可以幫助我們爬取圖片、文章等各種我們想要的數(shù)據(jù);繪圖的包可以幫我們對各種圖片進行處理…

什么是第三方包

其實第三方包就是其他程序員公開到 Python 指定網(wǎng)站上寫好的功能封裝成包或者模塊,方便其他程序員方便下載和使用。

使用第三方包最大的好處就是我們想要實現(xiàn)的功能可能別人已經(jīng)幫助我們寫好了,我們只需要拿來主義,直接應(yīng)用在我們自己的代碼中就可以了,這樣自然就大大的提高了我們的開發(fā)效率

如何安裝第三方包

了解了第三方包之后,我們需要去下載并安裝他們才可以在我們的代碼中使用。而 pip 與 easy_install就是獲取第三方包的工具,在我們安裝好python 的時候,pip 就已經(jīng)自動安裝好了,我們只需要在 Terminal 終端 去使用即可;

隨著 python 的發(fā)展越來越快,pip 的使用率也越來越高,就逐漸的替代了 easy_install 。

我們剛剛說的 在我們安裝好 python 的時候,就自動的安裝了 pip 其實是有版本限制的,在 Python 3.4 版本之前是不會安裝 pip 的; Python 3.4 版本之后,會自帶這兩種包管理工具。

如果使用的是 老版本的 python ,可以通過 https://pip.pypa.io/en/stable/installing/ 去下載安裝 pip

由于 pip 管理工具中的第三方包要比 easy_install 多很多,所以我們主要介紹 pip 的使用。pip 的用法也是非常簡單的,我們只需要在 Terminal 終端,輸入 pip install 包名 就可以進行下載并安裝。

這里也推薦大家一個 python 程序員的寶藏網(wǎng)站,github.com 搜索 python 第三方包 (github 會伴隨程序員的完整職業(yè)生涯);在 github 有很多程序員公開出來的第三方包,自然也有 python 的。需要注意的是 github 是一個國外的網(wǎng)站,所以訪問的有點慢,大家可以 ke 、xue、shang、wang ?;蛘咭部梢耘R時使用 國內(nèi)的鏡像源地址 ,在下方的 pip 安裝拓展 小節(jié)有介紹。

pip 安裝 第三包

# 查詢當前 pip 版本:
pip -V

# 執(zhí)行結(jié)果如下:
# pip 21.1.2 from D:\PycharmProjects\XXXXX\XXXXX\venv\lib\site-packages\pip (python 3.10)

PS:每一個版本的 python 都有自己的 pip ,所以當我們安裝了多個版本的 python 后,猶豫 python 版本太多,所以如果我們使用錯了 pip ,就會造成我們有的時候看著像是已經(jīng)安裝好了第三方包,但卻無法使用的情況。所以這個地方是一定要注意的?。?!

安裝第一個第三方包工具 - ipython

接下來我們就嘗試一下安裝我們第一個第三方包 - ipython;

ipython 是一個 python 的交互式 shell ,比默認的 python shell 好用很多,支持變量自動補全,自動縮進。

在 Terminal 終端,輸入 pip install ipython ,如果報錯:WARNING: You are using pip version 21.1.2; however, version 22.0.4 is available. 可以通過 kexue、shangwang 的方式安裝、或 臨時使用國內(nèi)鏡像源地址、再或者 升級 你的 pip ;升級 命令 python -m pip install --upgrade pip

這里看到,我們安裝失敗了;利用我們上面說的方法 kexue、shang、wang 的方式們再次安裝

當看到 Successfully 則表示我們已經(jīng)安裝成功了,雖然仍提示 WARNING 讓我們升級 pip ,但是我們依然安裝成功。試試看 ipython 是否可以正常使用。

通過與 python 自帶的 shell 終端相比, ipython 不僅交互更方便,還可以自動支持變量自動補全,自動縮進。凸顯了極大的人性化的便捷性。

這里還有個需要注意的地方,當我們的環(huán)境安裝了 多個版本的 python 時,一定要檢查我們安裝的路徑對不對,否則就會出現(xiàn)安裝到其他版本 python 的 情況。如下圖:

當然了如果默認是進入我們其他版本的 python 或者 ipython 我們可以通過 python3 或者 ipython3 的命令進入到我想要進去的版本的交互終端。

注意:在我們平時執(zhí)行一個腳本的時候,我們還是推薦使用 python 解釋器,ipython 只是作為我們的一個調(diào)試環(huán)境使用。

pip 安裝拓展

實際上我們安裝 pip 和 第三方包 是有選擇的,默認情況下選擇的是國外的地址去下載并安裝,由于網(wǎng)絡(luò)與距離的原因往往會很慢,同時因為網(wǎng)絡(luò)波動問題會造成我們安裝失敗的情況。

在這種情況下,我們國內(nèi)就推出了一寫可以就近進行下載和安裝的地址,比如我們的 清華、阿里云、中國科技大學(xué)、華中理工大學(xué)等都提供了近源地址。如下:

# 官方源地址
# https://pypi.python.org/simple/
# https://pypi.tuna.tsinghua.edu.cn/simple/

# 國內(nèi)源地址
# 阿里云:http://mirrors.aliyun.com/pypi/simple/ 
# 中國科技大學(xué):https://pypi.mirrors.ustc.edu.cn/simple/
# 豆瓣:http://pypi.douban.com/simple/
# 清華大學(xué):https://pypi.tuna.tsinghua.edu.cn/simple/
# 中國科學(xué)技術(shù)大學(xué):http://pypi.mirrors.ustc.edu.cn/simple/

# 使用方法如下:

pip install -i http://pypi.douban.com/simple/ ipython
pip install -i http://pypi.douban.com/simple/ ipython==7.12.0   # 指定版本號安裝

pip 安裝第三方包的卸載

既然可以安裝,那就肯定可以卸載。卸載方法如下:

# 卸載方法:

pip uninstall ipython

# 這里同樣需要注意,被卸載的第三方包對應(yīng)的 python 解釋器版本的問題。

總結(jié)

今天該章節(jié)主要介紹了什么是包,什么是模塊。如何導(dǎo)入包、模塊,導(dǎo)入子包、主包如何調(diào)用他們的函數(shù)。最后又講述了如何安裝、使用、卸載第三方包。

以上就是Python學(xué)習(xí)之包與模塊詳解的詳細內(nèi)容,更多關(guān)于Python包 模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python數(shù)據(jù)庫PooledDB連接池初始化使用示例

    python數(shù)據(jù)庫PooledDB連接池初始化使用示例

    這篇文章主要為大家介紹了python數(shù)據(jù)庫PooledDB連接池初始化使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • python logging模塊的使用總結(jié)

    python logging模塊的使用總結(jié)

    這篇文章主要介紹了python logging模塊使用總結(jié)以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。,需要的朋友可以參考下
    2019-07-07
  • 詳解Python之可迭代對象,迭代器和生成器

    詳解Python之可迭代對象,迭代器和生成器

    這篇文章主要為大家介紹了Python之可迭代對象,迭代器和生成器,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python實現(xiàn)制作銷售數(shù)據(jù)可視化看板詳解

    Python實現(xiàn)制作銷售數(shù)據(jù)可視化看板詳解

    在數(shù)據(jù)時代,銷售數(shù)據(jù)分析的重要性已無需贅言。只有對銷售數(shù)據(jù)的準確分析我們才有可能找準數(shù)據(jù)變動的原因。本文將介紹用Python制作銷售數(shù)據(jù)大屏的方法。感興趣的可以關(guān)注一下
    2021-11-11
  • django-rest-framework 自定義swagger過程詳解

    django-rest-framework 自定義swagger過程詳解

    這篇文章主要介紹了django-rest-framework 自定義swagger過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 使用python matploblib庫繪制準確率,損失率折線圖

    使用python matploblib庫繪制準確率,損失率折線圖

    這篇文章主要介紹了使用python matploblib庫繪制準確率,損失率折線圖,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 更新修改后的Python模塊方法

    更新修改后的Python模塊方法

    在本篇內(nèi)容中我們給大家整理了關(guān)于如何更新修改后的Python模塊的具體步驟和方法,有興趣的朋友們學(xué)習(xí)下。
    2019-03-03
  • python中出現(xiàn)invalid?syntax報錯的幾種原因分析

    python中出現(xiàn)invalid?syntax報錯的幾種原因分析

    這篇文章主要介紹了python中出現(xiàn)invalid?syntax報錯的幾種原因分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python 一句話生成字母表的方法

    Python 一句話生成字母表的方法

    今天小編就為大家分享一篇Python 一句話生成字母表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 使用OpenCV實現(xiàn)道路車輛計數(shù)的使用方法

    使用OpenCV實現(xiàn)道路車輛計數(shù)的使用方法

    這篇文章主要介紹了使用OpenCV實現(xiàn)道路車輛計數(shù)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論