欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python模塊、包和發(fā)布模塊示例代碼

 更新時間:2023年01月31日 14:30:32   作者:天寒心亦熱  
模塊是python程序架構(gòu)的一個核心概念,模塊名同樣也是一個標(biāo)識符,需要符合標(biāo)識符的命名規(guī)則,接下來通過本文給大家講解Python模塊、包和發(fā)布模塊,需要的朋友可以參考下

1.模塊

1.1模塊的概念

模塊是python程序架構(gòu)的一個核心概念

  • 每一個以擴(kuò)展名.py結(jié)尾的python源代碼文件都是一個模塊
  • 模塊名同樣也是一個標(biāo)識符,需要符合標(biāo)識符的命名規(guī)則
  • 在模塊中定義的全局變量、函數(shù)、類都是提供給外界直接使用的工具
  • 模塊就好比工具包,要想使用這個工具包中的工具,就需要先導(dǎo)入這個模塊

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

1.2.1 import導(dǎo)入

import 模塊名1,模塊名2

提示:再導(dǎo)入模塊時,每個導(dǎo)入應(yīng)該獨占一行

import 模塊名1
import 模塊名2

導(dǎo)入之后

  • 通過 模塊名.使用模塊提供的工具 -- 全局變量、函數(shù)、類

使用as指定模塊的別名

如果模塊的名字太長,可以使用as指定模塊的名稱,以方便在代碼中的使用

import 模塊名1 as 模塊別名

注意:模塊別名應(yīng)該符合大駝峰命名法

1.2.2 from...import導(dǎo)入

  • 如果希望從某一個模塊中,導(dǎo)入部分工具,就可以使用from...import的方式

  • import 模塊名 是一次性把模塊中所有工具全部導(dǎo)入,并且通過 模塊名/別名訪問
# 從 模塊 導(dǎo)入 某一個工具
from 模塊名1 import 工具名

導(dǎo)入之后

  • 不需要通過 模塊名.
  • 可以直接使用 模塊提供的工具 -- 全局變量、函數(shù)、類

注意

如果兩個模塊,存在同名的函數(shù),那么 后導(dǎo)入模塊的函數(shù),會覆蓋掉先導(dǎo)入的函數(shù)

  • 開發(fā)時import代碼應(yīng)該統(tǒng)一寫在代碼的頂部,更容易及時發(fā)現(xiàn)沖突,一旦發(fā)現(xiàn)沖突,可以使用 as關(guān)鍵字 給其中一個工具起一個別名

1.2.3 from...import *(了解)

# 從 模塊 導(dǎo)入 所有工具
from 模塊名1 import *

注意

這種方式不推薦使用,因為函數(shù)重名并沒有任何提示,出現(xiàn)問題不好排查

1.3模塊的搜索順序(擴(kuò)展)

python的解釋器在導(dǎo)入模塊時,會:

  • 搜索當(dāng)前目錄指定模塊名的文件,如果有就直接導(dǎo)入,如果沒有,再搜索系統(tǒng)目錄

在開發(fā)時,給文件起名,不要和系統(tǒng)的模塊文件重名

python中每一個模塊都有一個內(nèi)置屬性 __file__可以查看模塊的完整路徑

示例

import random
print(random.__file__)
# 生成一個 0-10 的數(shù)字
rand = random.randint(0,10)
 
print(rand)

注意:如果當(dāng)前目錄下,存在一個random.py 的文件,程序就無法正常執(zhí)行了!

  • 這個時候,python的解釋器會加載當(dāng)前目錄下的random.py 而不會加載系統(tǒng)的random模塊

1.4原則--每一個文件都應(yīng)該是可以被導(dǎo)入的

  • 一個獨立的python文件就是一個模塊
  • 在導(dǎo)入文件時,文件中 所有沒有任何縮進(jìn)的代碼 都會被執(zhí)行一遍

實際開發(fā)場景

  • 在實際開發(fā)中,每一個模塊都是獨立開發(fā)的,大多都有專人負(fù)責(zé)
  • 開發(fā)人員通常會在模塊下方增加一些測試代碼

僅在模塊內(nèi)使用,而被導(dǎo)入到其它文件中不需要執(zhí)行

__name__屬性

  • __name__屬性可以做到,測試模塊的代碼 只在測試情況下被運(yùn)行,而在被導(dǎo)入時不會被執(zhí)行
  • __name__是python的一個內(nèi)置屬性,記錄著一個字符串
  • 如果 是被其它文件導(dǎo)入的,__name__就是模塊名
  • 如果 是當(dāng)前執(zhí)行的程序__name__是__main__
# 導(dǎo)入模塊
# 定義全局變量
# 定義類
# 定義函數(shù)
 
#在代碼的最下方
def main():
    # ...
    pass
 
# 根據(jù) __name__ 判斷是否執(zhí)行下方代碼
if __name__ == "__main__"
    main()

2.包(Package)

概念

  • 包是一個包含多個模塊的特殊目錄,目錄下有一個特殊的文件 __init__.py,包名的命名方式和變量名一致,小寫字母+_

  • __init__.py的建立方式

利用Directory建立包,需要自己新建__init__.py文件

利用Pyhon.Package建立包,會自動產(chǎn)生__init__.py文件

好處

  • 使用 import 包名 可以一次性導(dǎo)入包中所有的模塊

案例演練

  • 新建一個 hm_message 的包
  • 在目錄下,新建兩個文件 send_message和receive_message
  • 在send_message文件中定義一個send函數(shù)
  • 在receive_message文件中定義一個receive函數(shù)
  • 在外部直接導(dǎo)入 hm_message的包

__init__.py

要在外界使用包中的模塊,需要在__init__.py中指定對外界提供的模塊列表

# 從 當(dāng)前目錄 導(dǎo)入 模塊列表
from  . import send_message
from  . import receive_message

3.發(fā)布模塊(了解)

如果希望自己開發(fā)的模塊,分享給其他人,可以按照以下步驟操作

3.1制作發(fā)布壓縮包步驟

創(chuàng)建setup.py的文件

from distutils.core import setup
 
setup(name="hm_message",  # 包名
      version="1.0",  # 版本
      description="itheima's 發(fā)送和接收消息模塊",  # 描述信息
      long_description="完整的發(fā)送和接收消息模塊",  # 完整描述信息
      author="itheima",  # 作者
      author_email="itheima@itheima.com", # 作者郵箱
      url="www.itheima.com", # 主頁
      py_modules=["hm_message.send_message",
                  "hm_message.receive_message"])

有關(guān)字典參數(shù)的詳細(xì)信息,可以參閱官方網(wǎng)站:

https://docs.python.org/2/distutils/apiref.html

構(gòu)建模塊

$ python3 setup.py build

生成發(fā)布壓縮包

注意:要制作哪個版本的模塊,就使用哪個版本的解釋器執(zhí)行

$ python3 setup.py sdist

3.2安裝模塊

$ tar zxvf hm_message-1.0.tar.gz
$ sudo python3 setup.py install

卸載模塊

直接從安裝目錄下,把安裝模塊的目錄刪除就可以

$ cd  /root/anaconda3/lib/python3.9/site-packages/
sudo rm -rf hm_message*

3.3 pip安裝第三方模塊

  • 第三方模塊通常是指由 知名的第三方團(tuán)隊開發(fā)的 并且被程序員廣泛使用的python包/模塊

  • 例如 pygame就是一套非常成熟的游戲開發(fā)模塊

  • pip是一個現(xiàn)代的、通用的python包管理工具

提供了對python包的查找、下載、安裝、卸載等功能

安裝和卸載命令如下:

sudo是指要以root的身份進(jìn)行執(zhí)行

# 將模塊安裝到 python 2.x 環(huán)境
$ sudo pip install pygame
$ sudo pip uninstall pygame
 
# 將模塊安裝到 python 3.x 環(huán)境
$ sudo pip3 install pygame
$ sudo pip3 uninstall pygame

在Mac下安裝ipython

$ sudo pip install ipython

在Linux下安裝ipython

$ sudo apt install ipython
$ sudo apt install ipython3

代碼見:https://github.com/x45w/python_mokuai_bao_fabumokuai.git

內(nèi)容總結(jié)于:https://space.bilibili.com/37974444

到此這篇關(guān)于Python模塊、包和發(fā)布模塊的文章就介紹到這了,更多相關(guān)Python模塊 包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python THREADING模塊中的JOIN()方法深入理解

    Python THREADING模塊中的JOIN()方法深入理解

    這篇文章主要介紹了Python THREADING模塊中的JOIN()方法深入理解,本文用簡潔易懂的語言總結(jié)了對JOIN()方法的理解,不同于其它文章,需要的朋友可以參考下
    2015-02-02
  • Python代碼實現(xiàn)粒子群算法圖文詳解

    Python代碼實現(xiàn)粒子群算法圖文詳解

    這篇文章主要介紹了Python編程實現(xiàn)粒子群算法詳解,涉及粒子群算法的原理,過程,以及實現(xiàn)代碼示例,具有一定參考價值,需要的朋友可以了解下
    2021-08-08
  • pytorch之Resize()函數(shù)具體使用詳解

    pytorch之Resize()函數(shù)具體使用詳解

    這篇文章主要介紹了pytorch之Resize()函數(shù)具體使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 基于python的ini配置文件操作工具類

    基于python的ini配置文件操作工具類

    這篇文章主要為大家詳細(xì)介紹了基于python的ini配置文件操作工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 淺談django rest jwt vue 跨域問題

    淺談django rest jwt vue 跨域問題

    這篇文章主要介紹了django rest jwt vue 跨域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 實例講解Python3中abs()函數(shù)

    實例講解Python3中abs()函數(shù)

    在本篇文章里小編給大家分享了關(guān)于Python3中abs()函數(shù)的相關(guān)知識點內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實現(xiàn)

    pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實現(xiàn)

    這篇文章主要介紹了pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python txt中的文件,逐行讀取并且每行賦值給變量問題

    python txt中的文件,逐行讀取并且每行賦值給變量問題

    這篇文章主要介紹了python txt中的文件,逐行讀取并且每行賦值給變量問題,具有很好的參考價值,希望對大家有所幫助。
    2023-02-02
  • 對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解

    對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解

    下面小編就為大家分享一篇對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化

    詳解如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關(guān)重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文將介紹如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化,感興趣的可以了解下
    2024-04-04

最新評論