最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.模塊

1.1模塊的概念

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

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

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

1.2.1 import導(dǎo)入

import 模塊名1,模塊名2

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

import 模塊名1
import 模塊名2

導(dǎo)入之后

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

使用as指定模塊的別名

如果模塊的名字太長(zhǎng),可以使用as指定模塊的名稱(chēng),以方便在代碼中的使用

import 模塊名1 as 模塊別名

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

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

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

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

導(dǎo)入之后

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

注意

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

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

1.2.3 from...import *(了解)

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

注意

這種方式不推薦使用,因?yàn)楹瘮?shù)重名并沒(méi)有任何提示,出現(xiàn)問(wèn)題不好排查

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

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

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

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

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

示例

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

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

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

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

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

實(shí)際開(kāi)發(fā)場(chǎng)景

  • 在實(shí)際開(kāi)發(fā)中,每一個(gè)模塊都是獨(dú)立開(kāi)發(fā)的,大多都有專(zhuān)人負(fù)責(zé)
  • 開(kāi)發(fā)人員通常會(huì)在模塊下方增加一些測(cè)試代碼

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

__name__屬性

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

2.包(Package)

概念

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

  • __init__.py的建立方式

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

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

好處

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

案例演練

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

__init__.py

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

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

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

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

3.1制作發(fā)布?jí)嚎s包步驟

創(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", # 主頁(yè)
      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ā)布?jí)嚎s包

注意:要制作哪個(gè)版本的模塊,就使用哪個(gè)版本的解釋器執(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)隊(duì)開(kāi)發(fā)的 并且被程序員廣泛使用的python包/模塊

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

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

提供了對(duì)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

代碼見(jiàn):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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深度學(xué)習(xí)Tensorflow2.8實(shí)現(xiàn)GRU文本生成任務(wù)詳解

    深度學(xué)習(xí)Tensorflow2.8實(shí)現(xiàn)GRU文本生成任務(wù)詳解

    這篇文章主要為大家介紹了深度學(xué)習(xí)Tensorflow?2.8?實(shí)現(xiàn)?GRU?文本生成任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Python+OpenCV實(shí)現(xiàn)表面缺陷檢測(cè)

    Python+OpenCV實(shí)現(xiàn)表面缺陷檢測(cè)

    對(duì)于現(xiàn)在很多工業(yè)檢測(cè),特別是對(duì)一些精密的器件進(jìn)行篩選,往往都是像素級(jí)別的,十分的精確。本文將利用OpenCV+Python實(shí)現(xiàn)表面缺陷檢測(cè),感興趣的可以了解一下
    2022-08-08
  • Pytorch關(guān)于Dataset?的數(shù)據(jù)處理

    Pytorch關(guān)于Dataset?的數(shù)據(jù)處理

    這篇文章主要介紹了Pytorch關(guān)于Dataset?的數(shù)據(jù)處理,學(xué)習(xí)如何對(duì)卷積神經(jīng)網(wǎng)絡(luò)編程;首先,需要了解Pytorch對(duì)數(shù)據(jù)的使用,也是在我們模型流程中對(duì)數(shù)據(jù)的預(yù)處理部分,下面我們就一起進(jìn)入文章查看具體處理過(guò)程吧
    2021-12-12
  • python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算

    python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python PyQt5干貨滿(mǎn)滿(mǎn)小項(xiàng)目輕松實(shí)現(xiàn)高效摳圖去背景

    Python PyQt5干貨滿(mǎn)滿(mǎn)小項(xiàng)目輕松實(shí)現(xiàn)高效摳圖去背景

    PyQt5以一套Python模塊的形式來(lái)實(shí)現(xiàn)功能。它包含了超過(guò)620個(gè)類(lèi),600個(gè)方法和函數(shù)。本篇文章手把手帶你用PyQt5輕松實(shí)現(xiàn)圖片扣除背景,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 兩行代碼解決Jupyter Notebook中文不能顯示的問(wèn)題

    兩行代碼解決Jupyter Notebook中文不能顯示的問(wèn)題

    這篇文章主要介紹了兩行代碼解決Jupyter Notebook中文不能顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • pycharm安裝及如何導(dǎo)入numpy

    pycharm安裝及如何導(dǎo)入numpy

    這篇文章主要介紹了pycharm安裝及如何導(dǎo)入numpy,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲

    Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲

    飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫(xiě)一個(gè)簡(jiǎn)單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 徹底搞懂 python 中文亂碼問(wèn)題(深入分析)

    徹底搞懂 python 中文亂碼問(wèn)題(深入分析)

    現(xiàn)在有的小伙伴為了躲避中文亂碼的問(wèn)題甚至代碼中不使用中文,注釋和提示都用英文,我曾經(jīng)也這樣干過(guò),但這并不是解決問(wèn)題,而是逃避問(wèn)題,今天我們一起徹底解決 Python 中文亂碼的問(wèn)題
    2020-02-02
  • 詳解python之簡(jiǎn)單主機(jī)批量管理工具

    詳解python之簡(jiǎn)單主機(jī)批量管理工具

    這篇文章主要介紹了詳解python之簡(jiǎn)單主機(jī)批量管理工具,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01

最新評(píng)論

周口市| 犍为县| 四子王旗| 乡宁县| 宜城市| 兰考县| 东兰县| 定陶县| 广平县| 赞皇县| 定襄县| 宜兰市| 渭南市| 津南区| 房产| 富蕴县| 大姚县| 宾阳县| 天柱县| 垫江县| 青神县| 山阳县| 武冈市| 台安县| 右玉县| 浪卡子县| 宁蒗| 盐亭县| 鹤壁市| 关岭| 东至县| 呼图壁县| 武夷山市| 香港 | 运城市| 新竹县| 建湖县| 罗城| 潮州市| 民勤县| 永新县|