久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

模塊和包

 文炳春秋 2020-04-02

https://www.cnblogs.com/JcrLive/p/12235677.html

01. 模塊

1.1 模塊的概念

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

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

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

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)該符合 大駝峰命名法

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)鍵字 給其中一個工具起一個別名
from...import *(知道)
# 從 模塊 導(dǎo)入 所有工具
from 模塊名1 import *

注意

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

1.3 模塊的搜索順序[擴展]

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

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

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

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

示例

import random

# 生成一個 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)入文件時,,文件中 所有沒有任何縮進的代碼 都會被執(zhí)行一遍!

實際開發(fā)場景

  • 在實際開發(fā)中,,每一個模塊都是獨立開發(fā)的,,大多都有專人負(fù)責(zé)
  • 開發(fā)人員 通常會在 模塊下方 增加一些測試代碼
    • 僅在模塊內(nèi)使用,,而被導(dǎo)入到其他文件中不需要執(zhí)行

__name__ 屬性

  • __name__ 屬性可以做到,測試模塊的代碼 只在測試情況下被運行,,而在 被導(dǎo)入時不會被執(zhí)行,!
  • __name__ 是 Python 的一個內(nèi)置屬性,記錄著一個 字符串
  • 如果 是被其他文件導(dǎo)入的,,__name__ 就是 模塊名
  • 如果 是當(dāng)前執(zhí)行的程序 __name__ 是 __main__

在很多 Python 文件中都會看到以下格式的代碼

# 導(dǎo)入模塊
# 定義全局變量
# 定義類
# 定義函數(shù)

# 在代碼的最下方
def main():
    # ...
    pass

# 根據(jù) __name__ 判斷是否執(zhí)行下方代碼
if __name__ == "__main__":
    main()

02. 包(Package)

概念

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

好處

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

案例演練

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

__init__.py

  • 要在外界使用  中的模塊,,需要在 __init__.py 中指定 對外界提供的模塊列表
# 從 當(dāng)前目錄 導(dǎo)入 模塊列表
from . import send_message
from . import receive_message

03. 發(fā)布模塊(知道)

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

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

1) 創(chuàng)建 setup.py

  • 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="[email protected]",  # 作者郵箱
      url="www.itheima.com",  # 主頁
      py_modules=["hm_message.send_message",
                  "hm_message.receive_message"])

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

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

2) 構(gòu)建模塊

$ python3 setup.py build

3) 生成發(fā)布壓縮包

$ python3 setup.py sdist

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

3.2 安裝模塊

$ tar -zxvf hm_message-1.0.tar.gz 

$ sudo python3 setup.py install

卸載模塊

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

$ cd /usr/local/lib/python3.5/dist-packages/
$ sudo rm -r hm_message*

3.3 pip 安裝第三方模塊

  • 第三方模塊 通常是指由 知名的第三方團隊 開發(fā)的 并且被 程序員廣泛使用 的 Python 包 / 模塊
    • 例如 pygame 就是一套非常成熟的 游戲開發(fā)模塊
  • pip 是一個現(xiàn)代的,,通用的 Python 包管理工具
  • 提供了對 Python 包的查找、下載,、安裝,、卸載等功能

安裝和卸載命令如下:

# 將模塊安裝到 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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多