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

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

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

1.模塊

1.1模塊的概念

模塊是python程序架構的一個核心概念

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

1.2模塊的導入方式

1.2.1 import導入

import 模塊名1,模塊名2

提示:再導入模塊時,每個導入應該獨占一行

import 模塊名1
import 模塊名2

導入之后

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

使用as指定模塊的別名

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

import 模塊名1 as 模塊別名

注意:模塊別名應該符合大駝峰命名法

1.2.2 from...import導入

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

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

導入之后

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

注意

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

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

1.2.3 from...import *(了解)

# 從 模塊 導入 所有工具
from 模塊名1 import *

注意

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

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

python的解釋器在導入模塊時,會:

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

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

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

示例

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

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

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

1.4原則--每一個文件都應該是可以被導入的

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

實際開發(fā)場景

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

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

__name__屬性

  • __name__屬性可以做到,測試模塊的代碼 只在測試情況下被運行,而在被導入時不會被執(zhí)行
  • __name__是python的一個內置屬性,記錄著一個字符串
  • 如果 是被其它文件導入的,__name__就是模塊名
  • 如果 是當前執(zhí)行的程序__name__是__main__
# 導入模塊
# 定義全局變量
# 定義類
# 定義函數(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 包名 可以一次性導入包中所有的模塊

案例演練

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

__init__.py

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

# 從 當前目錄 導入 模塊列表
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"])

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

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

構建模塊

$ 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安裝第三方模塊

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

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

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

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

安裝和卸載命令如下:

sudo是指要以root的身份進行執(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

內容總結于:https://space.bilibili.com/37974444

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

相關文章

最新評論