1. 程式人生 > >python模組和包

python模組和包

1. 模組

1.1 模組的概念

模組是 Python 程式架構的一個核心概念

  • 每一個以副檔名 py 結尾的 Python 原始碼檔案都是一個 模組
  • 模組名 同樣也是一個 識別符號,需要符合識別符號的命名規則
  • 在模組中定義的 全域性變數 、函式 都是提供給外界直接使用的 工具
  • 模組 就好比是 工具包,要想使用這個工具包中的工具,就需要先 匯入 這個模組

1.2 模組的兩種匯入方式

1)import 匯入

import 模組名1, 模組名2 

提示:在匯入模組時,每個匯入應該獨佔一行

import 模組名1
import 模組名2 
  • 匯入之後
    • 通過 模組名. 使用 模組提供的工具
       —— 全域性變數函式

使用 as 指定模組的別名

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

import 模組名1 as 模組別名

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

2)from...import 匯入

  • 如果希望 從某一個模組 中,匯入 部分 工具,就可以使用 from ... import 的方式
  • import 模組名 是 一次性 把模組中 所有工具全部匯入,並且通過 模組名/別名 訪問
# 從 模組 匯入 某一個工具
from 模組名1 import 工具名
  • 匯入之後
    • 不需要 通過 模組名.
    • 可以直接使用 模組提供的工具
       —— 全域性變數函式

注意

如果 兩個模組,存在 同名的函式,那麼 後匯入模組的函式,會 覆蓋掉先匯入的函式

  • 開發時 import 程式碼應該統一寫在 程式碼的頂部,更容易及時發現衝突
  • 一旦發現衝突,可以使用 as 關鍵字 給其中一個工具起一個別名

from...import *

# 從 模組 匯入 所有工具
from 模組名1 import *

注意

這種方式不推薦使用,因為函式重名並沒有任何的提示,出現問題不好排查

1.3 模組的搜尋順序

Python 的直譯器在 匯入模組 時,會:

  1. 搜尋 當前目錄 指定模組名的檔案,如果有就直接匯入
  2. 如果沒有,再搜尋 系統目錄

在開發時,給檔案起名,不要和 系統的模組檔案 重名

Python 中每一個模組都有一個內建屬性 __file__ 可以 檢視模組 的 完整路徑

示例

import random

# print(random.__file__)

print(random.randint(0, 10))

注意:如果當前目錄下,存在一個 random.py 的檔案,程式就無法正常執行了!

  • 這個時候,Python 的直譯器會 載入當前目錄 下的 random.py 而不會載入 系統的 random 模組

1.4 原則 —— 每一個檔案都應該是可以被匯入的

  • 一個 獨立的 Python 檔案 就是一個 模組
  • 在匯入檔案時,檔案中 所有沒有任何縮排的程式碼 都會被執行一遍!

實際開發場景

  • 在實際開發中,每一個模組都是獨立開發的,大多都有專人負責
  • 開發人員 通常會在 模組下方 增加一些測試程式碼
    • 僅在模組內使用,而被匯入到其他檔案中不需要執行

__name__ 屬性

__name__ 屬性可以做到,測試模組的程式碼 只在測試情況下被執行,而在 被匯入時不會被執行

  • __name__ 是 Python 的一個內建屬性,記錄著一個 字串
  • 如果 是被其他檔案匯入的__name__ 就是 模組名
  • 如果 是當前執行的程式 __name__ 是 main

在很多 Python 檔案中都會看到以下格式的程式碼

# 匯入模組
# 定義全域性變數
# 定義類
# 定義函式

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

# 根據 __name__ 判斷是否執行下方程式碼
if __name__ == "__main__":
    main()

2. 包(Package)

概念

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

好處

  • 使用 import 包名 可以一次性匯入  中 所有的模組

案例演練

  1. 新建一個 zfx_message 的 
  2. 在目錄下,新建兩個檔案 send_message 和 receive_message
  3. 在 send_message 檔案中定義一個 send 函式
  4. 在 receive_message 檔案中定義一個 receive 函式
  5. 在外部直接匯入 zfx_message 的包
  • 要在外界使用  中的模組,需要在 __init__.py 中指定 對外界提供的模組列表
# 從 當前目錄 匯入 模組列表
from . import send_message
from . import receive_message

3. 釋出模組

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

3.1 製作釋出壓縮包步驟

1) 建立 setup.py

  • setup.py 的檔案
from distutils.core import setup

setup(name="xxx",  # 包名
      version="x.x.x",  # 版本
      description="xxx",  # 描述資訊
      long_description="xxx",  # 完整描述資訊
      author="xxx",  # 作者
      author_email="[email protected]",  # 作者郵箱
      url="www.xxx.com",  # 主頁
      py_modules=["xxx.xx",
                  "xx.xxx"])

有關字典引數的詳細資訊,可以參閱官方網站:

2) 構建模組

$ python3 setup.py build

3) 生成釋出壓縮包

$ python3 setup.py sdist

注意:要製作哪個版本的模組,就使用哪個版本的直譯器執行!

3.2 安裝模組

$ tar zxvf zfx_message-1.0.0.tar.gz

$ sudo python3 setup.py install

解除安裝模組

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

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

3.3 pip 安裝第三方模組

  • 第三方模組 通常是指由 知名的第三方團隊 開發的 並且被 程式設計師廣泛使用 的 Python 包 / 模組
    • 例如 pygame 就是一套非常成熟的 遊戲開發模組
  • pip 是一個現代的,通用的 Python 包管理工具
  • 提供了對 Python 包的查詢、下載、安裝、解除安裝等功能

安裝和解除安裝命令如下:

# 將模組安裝到 Python 2.x 環境
$ sudo pip install pygame
$ sudo pip uninstall pygame

# 將模組安裝到 Python 3.x 環境
$ sudo pip3 install pygame
$ sudo pip3 uninstall pygame

在 Mac 下安裝 iPython

$ sudo pip install ipython

在 Linux 下安裝 iPython

$ sudo apt install ipython
$ sudo apt install ipython3

相關推薦

python-模組

模組:1. 一個py檔案,就是一個模組,檔案中包括定義的函式和類等資訊。2. 儘管可以import多次,實際上模組只匯入一次3. 模組搜尋路徑 記憶體中已經載入的模組->內建模組->sys.path路徑(導模組的環境變數)中包含的模組 4. 匯入模組      將

python模組

1. 模組 1.1 模組的概念 模組是 Python 程式架構的一個核心概念 每一個以副檔名 py 結尾的 Python 原始碼檔案都是一個 模組 模組名 同樣也是一個 識別符號,需要符合識別符號的命名規則 在模組中定義的 全域性變數 、函式、類 都是提供給

Python-模組.深入Celery之子任務及原語組式/鏈式/回撥

子級任務: 說明: 前面學習的任務呼叫基本上已夠用,但有時業務場景可能需要任務關聯,且子任務可能需要父任務為其傳遞一些必要引數,此時可通過func.subtask或簡寫func.s實現,子任務物件依然可以呼叫任務物件的API,delay和apply_async,但和常規呼叫

Python基礎---模組

模組 概念:     模組和java中的包概念類似 匯入:     關鍵字  import    import 模組名... 部分匯入:   關鍵字 from    from 模組名 import 函

python常用模組(模組的解釋,time模組,sys模組,random模組,os模組,jsonpickle序列化模組)

1.1模組 什麼是模組: 在計算機程式的開發過程中,隨著程式程式碼越寫越多,在一個檔案裡程式碼就會越來越長,越來越不容易維護。 為了編寫可維護的程式碼,我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的程式碼就相對較少,在python中。一個.py檔案就稱為一個模組(Module

python之路---25 模組

一.模組   1.匯入方式     自己建立的模組名稱 切不可和 內建模組的一樣    ①  import  模組      ②  import 模組 as  名      設定在此空間的名稱  

python模組機制:importfrom..import..

一. 兩個概念: 1.module A module is a file containing Python definitions and statements. 所以module就是一個.py檔案 2.package Packages are a way of str

python中的模組

1.模組模組(module)是搭建程式的一種方式。每一個Python程式碼檔案都是一個模組。2.模組的匯入(1)import格式:import 模組名使用格式: 模組名.類名 或者 全域性變數名 或者 函式名(2)from…import格式:from 模組名 import 類

Python模組的理解

iamlaosong文 學習Python語言,對模組和包的理解總結如下: 1、模組(Module)就是包含程式碼的檔案,不一定是Python程式碼,有四種程式碼型別的模組: •使用Python寫的程式

Python進階筆記(3)_ 模組

匯入模組 要使用一個模組,我們必須首先匯入該模組。Python使用import 語句匯入一個模組。例如,匯入系統自帶的模組 math:import math 你可以認為 math 就是一個指向已匯入模組的變數,通過該變數,我們可以訪問 math 模組中所定義的所有公開的函式

Python怎麼用pip安裝模組

import numpy as np解決“ModuleNotFoundError: No module named'tensorflow/numpy'”問題1. 找到python pip安裝路徑,一般在x:\Python\Script路徑下2. 開啟cmd命令視窗,將pip主

Python_從零開始學習_(44) 模組

目錄   1.  模組 1.1  模組的概念 1.2  模組的兩種匯入方式 1.3  模組的搜尋順序(擴充套件) 1.4  原則 ---- 每一個檔案都應該是可以被匯入的 2.  包 (package)

python模組揭祕

python模組揭祕 簡介 模組是最高級別的程式組織單元,它將程式程式碼和資料封裝起來以便重用。類似於c語言中include進來的標頭檔案。在python中,每一個檔案就是一個模組,並且模組匯入其它模組之後就可以使用匯入模組定義的變數名。 為什麼引入

day30-模組

一、模組介紹 1、什麼是模組 在python中,一個函式封裝一個功能,當一個檔案中包含很多個函式,而我們在其他程式中經常會用到這個檔案中的功能時,那麼我們就可以將這個包含多個函式的檔案封裝成一個模組,供其他程式來引用。簡單來說,一個模組就一系列常用功能函式的集合體,一個.py檔案就是一個模組。 模組分三

day33 Pyhton logging 模組

一內容回顧   try/except   try/except/else   try/finally   try/except   try/except/finally   try/except/else/finally 報錯的時候   1檢查程式邏輯是不是有問題   2.邏輯沒有問題,但是

python模組的匯入

一 .module 通常模組為一個檔案,直接使用import來匯入就好了。可以作為module的檔案型別有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。 二. package 通常包總是一個目錄,可以使用import匯入包,或者from + import

6、模組的匯入

一、模組匯入的方式:        方式一:import  模組名         使用時:模組名.函式名()     方式二 :from 模組名 import  函式名         使用時:函式名()     方式三: from 模組名 import *

Node中模組

一、模組和包 概念:模組(Module)和包(Package)是Node.js最重要的支柱。開發一個具有一定規模的程式不可能只用一個檔案,通常需要把各個功能拆分、分裝、然後組合起來。模組正式為了實現這種方式而誕生,在瀏覽器JavaScript中,指令碼模組的拆分和組合通

python 模組的介紹

模組: 為了編寫可維護的程式碼,我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的程式碼就相對較少,很多程式語言都採用這種組織程式碼的方式。在python中,一個.py的檔案就稱之為一個模組(Module)。 使用模組的好處: 提高了程式碼的可維護性,其次編寫程式碼不必從零開始。當

模組 1

# import os # os.makedirs('glance/api') # os.makedirs('glance/cmd') # os.makedirs('glance/db') # l = [] # l.append(open('glance/__init__.py','w')) # l.a