1. 程式人生 > 其它 >python學習筆記22.模組

python學習筆記22.模組

技術標籤:python學習筆記python

1. 模組

1.1 模組的概念

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

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

1.2 模組兩種匯入方式

1) import匯入

import 模組名1
import 模組名2
  • 提示:根據程式碼規範,在匯入模組時,每個匯入應該獨佔一行
  • 匯入之後,通過模組名.使用模組提供的工具 — 全域性變數、函式、類

使用 as

指定模組的別名

  • 如果模組的名字太長,可以使用 as 指定模組的名稱,以方便在程式碼中的使用
import 模組名1 as 模組別名
  • 注意:模組別名應該符合大駝峰命名法

2) from…import 匯入

  • 如果希望從某一模組中,匯入部分工具,就可以使用from ... import的方式
  • import 模組名 是一次性把模組中所有工具全部匯入,並且通過模組名/別名訪問
# 從模組匯入某一個工具
from 模組名 import 工具名
  • 匯入之後,不需要通過模組名.,即可直接使用模組提供的工具 — 全域性變數、函式、類
  • 注意:如果兩個模組存在同名的函式,那麼後匯入模組的函式,會覆蓋掉先匯入的函式
  • 開發時,import
    程式碼應該統一寫在程式碼的頂部,更容易及時發現衝突,一旦發現衝突,可以使用as關鍵字給其中一個工具起別名

1.3 模組的搜尋順序(擴充套件)

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

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

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

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

舉個栗子

import random

# 生成一個0-10的數字
rand = random.randint(0,10)

print(rand)

output:
9

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