導航:首頁 > 編程語言 > python中pack表示什麼

python中pack表示什麼

發布時間:2023-11-30 13:15:44

㈠ 從C#到python——5模塊和包

本章是《從到Python》系列連載的最後一章 內容較簡單 主要介紹Python中模塊與包的使用方法 如果你對這部分內容已經比較熟悉 就不要再浪費時間看了 寫這一章只是為了整個系列完整而已 沒什麼新的東西(本章內容主要參考了《Python精要參考》的第八章《模塊和包》)

模塊

Python的腳本都是用擴展名為py的文本文件保存的 一個腳本可以單獨運行 也可以導入另一個腳本中運行 當腳本被導入運行時 我們將其稱為模塊(mole) 模塊是Python組織代碼的基本方式

模塊名與腳本的文件名相同 例如我們編寫了一個名為Items py的腳本 則可在另外一個腳本中用import Items語句來導入它 在導入時 Python解釋器會先在腳本當前目錄下查找 如果沒有則在sys path包含的路徑中查找

在導入模塊時 Python會做以下三件事

( ) 為模塊文件中定義的對象創建一個名字空間 通過這個名字空間可以訪問到模塊中定義的函數及變數

( ) 在新創建的名字空間里執行模塊文件

( ) 創建一個名為模塊文件的對象 該對象引用模塊的名字空間 這樣就可以通過這個對象訪問模塊中的函數及變數 如

importsys printsys path

如果要同時導入多個模塊 可以用逗號分隔 如 import sys os

可以使用as關鍵字來改變模塊的引用對象名 如 import os as system

也可以用from語句將模塊中的對象直接導入到當前的名字空間(不創建模塊名字空間的引用對象) 如 from socket import gethostname

from語句支持逗號分割的對象 也可以使用星號(*)代表模塊中除下劃線開頭的所有對象 如 from socket import * 這是個懶省事的方法 我是經常用 不過用之前最好先搞清楚會不會覆蓋當前名字空間中的函數名等 總之不是個好習慣:)

除了Python腳本(不僅限於py 還包括pyc和pyo) import語句還可以導入C或擴展(已編譯為共享庫或DLL文件) 包(包含多個模塊 一會介紹)和內建模塊(使用C編寫並已鏈接到Python解釋器內) 不過除了包 另外兩個我也沒用過:(

Python解釋器在第一次import一個py文件的時候 會嘗試將其編譯為位元組碼文件 這個文件的擴展名通常為 pyc 它是已經完成語法檢查並轉譯為虛擬機指令的代碼 後邊的導入操作會直接讀取 pyc文件而不是 py文件 一般而言速度會更快

Python的模塊可以按目錄組織為包(package) 一般來說 我們將多個關系密切的模塊組織成一個包 以便於維護和使用 同時可有效避免名字空間沖突 創建一個包的步驟是 建立一個名字為包名字的文件夾 並在該文件夾下創建一個__init__ py文件 你可以根據需要在該文件夾下存放腳本文件 已編譯擴展及子包

一個典型的包可能有以下結構:

package / __init__ py subPack / __init__ py mole_ py mole_ py mole_ py subPack / __init__ py mole_ py mole_ py ……

只要目錄下存在__init__ py 就表明此目錄應被作為一個package處理 在最簡單的例子中 __init__ py 是一個空文件 不過一般我們都要在__init__ py中做一些包的初始化動作 或是設定一些變數

最常用的變數是__all__ 當使用包的人在用from pack import * 語句導入的時候 系統會查找目錄pack下的__init__ py文件中的__all__這個變數 __all__是一個list 包含了所有應該被導入的模塊名稱 例如 __all__ = [ m m m ] 表示當from pack import * 時會import 這三個mole

如果沒有定義__all__ from pack import * 不會保證所有的子模塊被導入 所以要麼通過__init py__ 要麼顯式地import 以保證子模塊被導入 如 import pack m pack m pack m

本章小結

本章介紹了Python中模塊與包的使用方法 要點如下

( ) 模塊是一個可以導入的Python腳本文件

( ) 包是一堆按目錄組織的模塊和子包 目錄下的__init__ py文件存放了包的信息

( ) 可以用import import as form import 等語句導入模塊和包

總之 模塊與包是在物理上組織Python代碼復用的一種有效方式 它有點類似於中的程序集(Assembly) 初學Python不一定要會自己建立模塊和包 但一定要學會使用各種包 這正是Python的強大之處 Python帶著各種各樣的battery 當你想完成一項功能時 最好先去搜索是不是有相關的包能夠復用(多數情況下是這樣的 因為在各種領域都有太多的人在為Python作著貢獻) 而且 絕大多數Python包都是開源的 研讀優秀的代碼也是提高編程能力的一種有效途徑

進一步閱讀的參考

《從C#到Python》系列連載到今天就全部寫完了 非常感謝各位的支持 鼓勵以及批評 使我能夠不斷完善和提高 讀完這個連載 在Python的語法上應該夠應付一陣了 當然結合具體的應用領域 還是有很多東西需要不斷學習 在此向大家推薦一些有用的讀物

[ ] 科學計算方面 這個是我的應用Python的主陣地 推薦HYRY Studio的《用Python做科學計算》(見) 我個人認為非常優秀的一本原創著作(這么好的書不知為何不正式出版 欽佩作者的rp !)

[ ] GUI開發方面 如果你用wxPython 那麼肯定要看《wxPython in Action》(中文版見) 而我個人主要用PyQt 這方面值得推薦的讀物是柴樹杉翻譯的《PyQt 編程簡介》(見) 如果英文好 還是推薦看《Rapid GUI Programming with Python and Qt》(英文pdf版地址 Oct pdf)

[ ] 開發方面 這個我還沒有涉及 Django的資料網上也是大把了 其它的Python Web開發框架也是多如牛毛 自己找找吧 )

lishixin/Article/program/ASP/201311/21672

㈡ python3 利用struct.pack 動態組建位元組流

a = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
fmt = str(len(a)) + 'H' # 默認小端模式
struct.pack(fmt, *a) # 列表a前面加*,表示將a解壓後單個傳入參數
推理:a如果是動態變化的list,或者動態截取a其中一段來轉換成位元組流都是可以的

閱讀全文

與python中pack表示什麼相關的資料

熱點內容
娛樂化app怎麼做 瀏覽:636
加密貨幣行業前景如何 瀏覽:572
arm查詢法的局限性和編譯流程 瀏覽:78
醒圖的文件夾叫什麼 瀏覽:998
php程序員北京 瀏覽:175
gcc編譯進程數據 瀏覽:653
手機上的文件夾是怎樣的 瀏覽:166
微雲群共享文件夾改變 瀏覽:534
程序員三年後能做什麼 瀏覽:449
分解運演算法則 瀏覽:876
python腳本執行sudo 瀏覽:721
安徽科海壓縮機 瀏覽:372
怎麼下載app里的講義 瀏覽:158
命令重啟伺服器 瀏覽:210
android電視root許可權獲取 瀏覽:249
解放戰爭pdf王樹增 瀏覽:685
python壓測app介面 瀏覽:953
抖音app怎麼推薦 瀏覽:100
歌庫伺服器能做其他什麼用途 瀏覽:95
安卓44虛擬機怎麼root 瀏覽:38