python之模塊和包

一 Python模塊簡介

Python模塊:
可以將代碼量較大的程序分割成多個有組織,彼此間獨立但又能互相交互的代碼片段,這些自我包含的有組織的代碼段就是模塊

模塊在物理形式上表現爲以.py 結尾的代碼文件
一個文件被看做一個獨立的模塊,一個模塊也可以被看做是一個文件
模塊的文件名就是模塊的名字加上擴展名.py
每個模塊都有自己的 名稱空間
Python 允許“導入”其他模塊以實現代碼重用,從而也實現了將獨立的代碼文件組織成更大的程序系統
Python 中,模塊也是對象
在一個模塊的頂層定義(全局變量)的所有變量都在被導入時成爲了被導入模塊的屬性

二 Python 程序架構:

一個Python程序通常包括一個頂層文件和其他的模塊文件(0個,1個或多個)
頂層文件:包含了程序的主要控制流程
模塊文件:爲頂層文件或其他模塊提供各種功能性組件
模塊首次導入(或重載)時,Python會立即執行模塊文件的頂層程序代碼(不在函數內的代碼),而位於函數體內的代碼直到函數被調用後纔會執行
Python自帶的模塊稱爲Python的標準庫模塊
模塊搜索:
Python解釋器在import 模塊是必須先找到對應的模塊文件
程序的主目錄
PYTHONPATH(如果設置了此變量)
標準鏈接庫目錄
任何.pth文件的內容(如果存在.pth文件)
這四個組件組合起來及sys.path所包含的路徑,而Python 會選擇在搜索路徑中的第一個符號導入文件名的文件

模塊的導入需要一個叫做“路徑搜索”的過程,即在文件系統“預定義區域”中查找mymodule 文件,這些預定義區域只不過是你的python搜索路徑的集合,路徑搜索和搜索路徑是兩個不同的概念前者是指查找某個文件的操作,後者是去查詢一組目錄。
默認搜索路徑是在編譯或安裝時指定的,它可以在一個或兩個地方修改
一個是啓動 Python 的 shell 或命令行的 PYTHONPATH 環境變量。 該變量的內容是一組用冒號分割的目錄路徑。 如果你想讓解釋器使用這個變量, 那麼請確保在啓動解釋器或執行 Python 腳本前設置或修改了該變量。
解釋器啓動之後, 也可以訪問這個搜索路徑, 它會被保存在 sys 模塊的 sys.path 變量裏。不過它已經不是冒號分割的字符串, 而是包含每個獨立路徑的列表。下面是一個 Unix 機器搜索路徑的樣例。切記, 搜索路徑在不同系統下一般是不同的。
python之模塊和包
這是一個列表,因此我們可以進行修改,如果你需要導入的模塊的目錄不在sys.path中,則可以使用append()進行對此列表操作,以導入此模塊
python之模塊和包
將上述目錄加入到sys.path中
python之模塊和包
查看
python之模塊和包
模塊導入
python之模塊和包
只要這個列表中包含這個文件,它就會被正確的導入,當然,這個方法是將其導入到文件的尾部,也可以使用insert()將其導入指定位置

三 pycharm中模塊的導入

1 同一個文件夾中的配置

A 定義一個被導入的模塊
python之模塊和包
B 導入模塊到目標模塊
python之模塊和包

C使用name獲取模塊的名稱,當爲模塊內部時其值爲mian,若爲導入的,則其名爲模塊名
一個模塊文件可以同時支持頂層執行(作爲頂層文件)或被導入(作爲模塊文件)
每個模塊都有個名爲name的內置屬性,python會自動設置該屬性
如果文件是以頂層程序文件執行,在啓動時,name的值爲“main
如果是被導入,則name的值爲模塊名
可以在模塊文件中檢測自己的name順序ing,以之實現在執行時運行指定的代碼,常用於模塊的自我測試

python之模塊和包
D將其導入執行模塊進行查看:
python之模塊和包
E使用if語句進行判斷,已達到不將被導入模塊的執行結果在導入模塊中執行:
python之模塊和包
F將其導入並驗證:
python之模塊和包
G將該配置導入到指定模板:(ctrl+alt+s)進行打開其配置:
python之模塊和包

2 將被導入模塊和導入模塊放置在不同的文件夾中

包:包用於將一組模塊歸併到一個目錄中,此目錄及爲包,目錄名及爲包名
包是一個有層次的文件目錄結構,定義了一個由模塊和子包組成的Python應用程序執行環境
基於包,Python在執行模塊導入時可以指定模塊的導入路徑
Import dir1.dir2.mod1
要使用如下的package1,則py_pkg_mod容器必須要在模塊中搜索路徑中
Import package1.mod1
包導入語句的路徑內的每個目錄內都必須有init.py 文件
init.py可包含python代碼,但通常爲空,僅用於扮演包初始化的掛鉤、替目錄產生模塊命名空間以及使用目錄導入時實現from* 行爲的角色
pycharm中包的創建:
使用alt+ins快捷鍵可以指定創建的是文件還是包,Python package爲帶有init.py的Python包。
python之模塊和包
python之模塊和包
A修改其配置使得不同文件夾的文件可以直接導入(選擇Sources Root)
python之模塊和包
B再次執行則可以進行導入並運行:
python之模塊和包
C取消則不能運行:
python之模塊和包
D在被導入模塊所在的文件夾創建init.py的文件並將其本地模塊導入到此init.py文件中
python之模塊和包
E在目標文件中導入該模塊並運行,則可以正常運行
python之模塊和包

3 from ... import ...的應用

1 For-import 語句

常用於導入指定模塊放入部分屬性至當前名稱空間(不需要加上該模塊的名稱)
From module import name1[,name2[nameN]]
Import 和 from都是隱形賦值語句
Import 將整個模塊對象賦值給一個變量名(模塊名)
From 將一個或多個變量名賦值給導入此模塊的模塊中的同名對象,如果當前環境中有與導入模塊相同的名稱,其將會被新導入的名稱所覆蓋
模塊就是名稱空間

2 import的工作機制

1 找到模塊文件
在指定的路徑下搜索模塊文件
2 編譯成字節碼
文件導入時就會編譯,因此,頂層文件的.pyc 字節碼文件在內部使用後會被丟棄,只有被導入的文件纔會留下.pyc文件
3 執行模塊的代碼來創建其所定義的對象
模塊文件中的所有語句會依次執行,從頭至尾,而此步驟中任何對變量名的複製運算,都會產生所得到的模塊文件的屬性
注意:模塊只在第一次導入時纔會執行如上步驟,
後續的導入操作只不過是提取內存中已加載的模塊對象
reload()可用於重新加載模塊
A 相同文件夾的模塊導入:
python之模塊和包
B 全局變量的定義
python之模塊和包
C 導入全局變量並運行,則可以運行。
python之模塊和包
D 導入函數並運行,則可以運行。
python之模塊和包
E 修改導入模塊的模塊名或函數、裝飾器名使用as 即可修改:
python之模塊和包

四 、第三方模塊的安裝

微信基本信息的獲取相關的軟件:(itchat)

1 下載並安裝Python-pip

python之模塊和包

如此則表示安裝成功:
python之模塊和包

2 安裝itchat(微信插件)

在聯網的狀況下進行安裝
使用pip安裝
python之模塊和包

2 使用pycharm安裝

使用ctrl+alt+s進入此界面並按右上角的加號(+)
python之模塊和包
進入之進行查找itchat,並按左下角的intall Package 即可安裝
python之模塊和包

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