1. 程式人生 > >常用模組+面向物件+異常+網路程式設計回顧--day30

常用模組+面向物件+異常+網路程式設計回顧--day30

常用模組
os* 作業系統 多數是檔案操作

os.path 處理檔案路徑

shutil 高階檔案處理模組 用起來更方便

sys 直譯器相關

json* 一種序列化方式 json可以支援跨平臺

pickle 一種序列化方式 僅在python可用

re* 正則表示式 用於處理字串 主要是查詢 匹配 驗證

爬蟲中 驗證使用者輸入是否合法

hashlib* hash一種演算法 輸入一段任意長度的資料 輸出一段固定長度的字元 也稱之為特徵碼
用於加密 和 資料校驗

logging* 輸出日誌(程式執行的日記 是為了 日後出現問題 有跡可循) 用字典來配置 需包含 handler formater filter logger


configparser 解析配置檔案的模組 配置檔案中只能有分割槽個選項


xml 可擴充套件標記語言 其優勢在於 可以自定義文件的結構 如HTML中有頭有尾
學習的重點是如何讀取xml文件 並找到需要的標籤

time* 時間相關的 time.time() 獲取時間戳 time.sleep() 讓程式休眠指定時間

subproces 子程序 由一個正在執行的程式開啟的另一個程式 稱之為子程序 噹噹前程式 無法處理使用者請求 但是另一個程式可以處理時
qq 中點選網頁連結 會開啟瀏覽器

random* 隨機數相關 抽獎 驗證碼 隨機點名

shelve 序列化方式 只有一個open函式
其使用方式與字典一致 相當於一個自帶序列化的字典


面向物件
一種程式設計思想
核心概念 類與物件
物件是什麼? 具備某些特徵和技能的結合體 是實際存在的
類是 一系列具備相同特徵和技能的集合體 是一種抽象概念

三大特性
封裝
隱藏內部實現細節 多外提供使用介面
提高安全性 隔離複雜度 明確區分內外
被封裝的函式和屬性 只能在當前類中使用
繼承
是一種類與類之間的關係
有了繼承關係後 子類可以使用父類中已經存在的屬性和方法
其目的是減少程式碼冗餘
python 可以多繼承
屬性查詢順序按照mro列表的順序
c3演算法 如果存在菱形繼承 先深度 (遇見了公共父類)在廣度
不存在菱形 則 深度優先
多型
一個事物具備多種形態
例如一個動物 有多種形態 如 豬狗牛羊
不同的物件具備相同的方法 會產生不同結果

要實現多型性 需要 先抽象得到到公共父類 然後子類去繼承父類 並且覆蓋父類中宣告的方法
abc模組可以強制子類必須實現父類的方法

python中推薦鴨子型別 只要具備相同的方法就可以看做同一個類


繫結方法
物件繫結方法
類繫結方法
繫結給誰 就由誰來呼叫 並且在呼叫時 自動傳入 物件或者類

非繫結方法
就是一個普通的函式

面向物件的精髓 就是 把資料和處理資料的方法進行繫結

異常
什麼是異常 程式執行的時候出現了錯誤 程式會立即停止執行
為什麼要學習異常 是為了保證程式可以正常執行結束 為了提高程式的健壯性
如何處理異常
try
可能出現異常的程式碼
except 異常的型別
列印異常資訊
嘗試處理異常

else
沒有出現異常時執行
finally
無論是否出現異常 最後都會執行
可以做清理操作

自定義異常型別
繼承Exception
主動丟擲異常
raise 任何Exception的子類 或者 其物件

萬能異常
Exception 一定要列印異常資訊

異常組成
異常的型別
異常的值
追蹤資訊

找最後一行 把它翻譯一下
如果最後一行不是你寫的而是模組內部的 那就找你寫最後一行

網路程式設計
編寫基於網路通訊的應用程式
1.七層模型
應用層

傳輸層
TCP/UDP工作在傳輸層
要求 要聯網的應用程式必具備埠號
用於定位某臺計算機上的某個應用程式
TCP
三次握手 建立連線
四次揮手 斷開連線
為了保證資料的完整性

網路層
ip協議
ip地址 四個十進位制數 前三個是網路號 後一位是主機號 主機號為1是閘道器
閘道器之間通過路由協議來找到對方

有了ip之後 可以在全世界範圍內定為到一臺計算機


鏈路層
解析二進位制的資料
乙太網協議工作在該層
規定了二進位制資料的分組方式
一段二進位制資料稱之為資料幀 1518
包含 head和data

還規定了一個計算機必須有MAC地址 通過MAC就能定位區域網內的一臺計算機

物理層: 物理傳輸介質
網線 光纖 無線網路
能傳輸二進位制資料