python面向對象編程——模塊

01. 模塊

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__)
# 生成一個 0~10 的數字
rand = random.randint(0, 5)


print(rand)

注意:如果當前目錄下,存在一個 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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章