1. 程式人生 > >python模塊第一印象

python模塊第一印象

集合 統一管理 lib 函數 時也 sys 原因 調用 編寫


一、模塊的基本信息

二、模塊的導入方式
三、模塊的導入細節
四、模塊循環導入問題的原因及解決

-------------------------------------------------------------------------------

一、模塊的基本信息
1、定義:一系列功能的集合體,用於完成某個特定的工作,類如保潔,需要的工具箱。
2、出現的原因:很多相互的類似功能,為了方便統一管理,將這些功能放到一個文件中,形成一個集合體,這個文件我們稱之為模塊。
3、常見的四種模塊來源:
1、使用python編寫的.py文件
2、從包中獲取,把一系列模塊組織到一起的文件夾(註:文件夾下有一個__init__.py文件,該文件夾稱之為包)

3、內置模塊,系統啟動時也會調用的模塊,使用C編寫並鏈接到python解釋器的內置模塊
4、第三方庫,提供的自定義模塊,就是已被編譯為共享庫或DLL的C或C++擴展

二、模塊的導入方式

1、格式: 在要使用模塊功能的文件中導入模塊格式:import 模塊名 - 模塊名:用來管理一系列功能的文件名
2、模塊導入過程分析
第一次導入待遇:
1、將被導入模塊進行預編譯,形成相對應的pyc文件。
2、進入被導入模塊,執行模塊文件內部代碼,同時生成模塊相對應的全局名稱空間。
3、在使用模塊的文件中,產生一個與模塊名同名的變量,指向模塊的全局名稱空間。
非第一次導入:
只會進行第三部操作:在使用模塊的文件中,產生一個與模塊名同名的變量,指向模塊的全局名稱空間。


三、模塊的導入細節
1、模塊分類:第一類:內置模塊(built-in),第二類:自定義模塊其中,包括(系統提供的lib文件下),第三方提供,自定義的py文件模塊。
2、 模塊的加載順序:內存中的模塊-內置模塊-sys.path下的文件。
3、關於sys.path環境變量:
獲取方式:import sys | sys.psth得到就是一個列表格式存儲的是絕對路徑。
清空環境變量:sys.path.clear(),清空後導入自定義模塊變量就不能在使用。
添加指定路徑到環境變量:
sys.path.append(r‘path‘) | sys.path.insert(0,r‘path‘)
4、模塊的部分功能導入

語法一:from m1 import fn1,fn2 ...fnn
語法二:from m1 import fn1 as f
兩種方式進行部分導入。
同時from...import導入依賴環境變量 sys.path
語法三:from m1 import * 導入m1中全部的變量。
其中模塊中所有的變量都存在於一個列表中,__all__=[]‘a‘, ‘b‘, ‘c‘, ‘d_‘, ‘_e‘
註意的是:系統默認添加的__all__中不會納入 _開頭的名字,所以*將會對下滑線變量進行隱藏,但是指名道姓的依然可以導入。


四:模塊循環導入問題的原因及解決

基本規則:
規則一:在程序中當遇到模塊的二次導入,都是直接引用內存的名稱空間,不會在進入模塊創建名稱空間。
規則二:只要能拿模塊地址,就可以對其進行調用執行。

循環導入的問題點:名字沒有產生就使用名字!
解決方案:
1、先產生名字,在導入模塊
2、使用時再導入,進行延後導入,但是只針對需要自定義的模塊,內置模塊,不會與自定義函數互相導入,所以不存在循環導入。


# 問題
# m1.py
import m2
print(m2.y)
x = 666

# m2.py
import m1
print(m2.x)
y = 888

# 解決
# m1.py
x = 666
import m2
print(m2.y)


# m2.py
y = 888
import m1
print(m2.x)

python模塊第一印象