Python開發之路(八)

2021-08-20 14:17:54 字數 2519 閱讀 5959

一、異常處理

try和except

釋義:try是讓程式先試著執行try下的**,如果不報錯就走這條;

except是一旦try下的**在執行過程中報錯,就走except這條。

例如一段**:

try:

print(11111)

# l =

# l[2]

int('a')

print(222222)

except

exception

as e:print(e)

11111是列印的,但執行到int('a')就會報錯,那麼此時就走except,列印報錯資訊。

finally用法:finally是一定會執行的**

try:

print(11111)

# l =

# l[2]

int('a')

print(222222)

except

exception

as e:print(e)

else:

print('

執行else

了') #

如果try

語句中的**都順利執行了,沒有報錯,那麼執行

else

的**finally:print('

執行finally

了') #

不管前面的**,

finally

一定會執行

總結:

try:

pass

# 可能有問題的**

except

valueerror: pass

# 能預料到的錯誤

except

exception

as e:print(e) #

能處理所有的異常

else:pass

# try

中的**沒有錯誤的時候,執行的

finally:pass

# 無論如何都會執行的

raise

valueerror

# 主動丟擲異常

二、包釋義:一組py檔案組成的資料夾,在這個資料夾裡有乙個__init__.py檔案,這就是包。

__init__.py有什麼用?

其實在呼叫乙個模組時,就是呼叫了這個模組名的py檔案,每個py檔案下都有乙個__init__.py檔案,這是做什麼用的呢?我們在呼叫這個模組前,首先呼叫的就是__init__.py檔案,先執行他,然後再執行 模組名.py檔案。

注:絕對匯入和相對匯入

帶有相對匯入路徑的檔案不能直接執行,因為不新增環境變數,**執行會報錯找不到這個模組或包,

三、網路程式設計

(下篇文章主要講併發程式設計,這裡對於1對1通訊的網路程式設計,只記錄模板並釋義)

首先我們要匯入乙個socket模組

server端:

import socket

# 買乙個手機

phone = socket.socket(socket.af_inet,socket.sock_stream)

# 給手機插卡

phone.bind(('127.0.0.1'

,8080))

# 手機開機,等**

phone.listen(5)

# 建立通話鏈結

conn,client_addr=phone.accept()

# 收發通訊資料

client_data = conn.recv(1024)

print(client_data.decode('utf-8'))

conn.send(client_data.upper())

# 掛**,手機關機

conn.close()

phone.close()

client端:

import socket

# 手上有乙個手機

phone = socket.socket(socket.af_inet,socket.sock_stream)

# 拿手機給對方撥號

phone.connect(('127.0.0.1'

,8080))

# 傳送資料

phone.send('hello'.encode('utf-8'))

# 接收資料

server_data = phone.recv(1024)

# 資料處理

print(server_data.decode('utf-8'))

# 掛**,關機

phone.close()

粘包問題:

粘包問題只發生在tcp協議下,而不發生在udp協議下。

在什麼情況下會發生粘包?

在基於tcp通訊,並連續傳送兩條資料是「可能」發生,即兩條變一條傳送過去了,並且發生粘包的條件是對端在接收資料時,接收bytes限制大於傳送資料量。

如何避免粘包情況發生呢?

先製作報頭,先發報頭,對端準確無誤接收報頭,再傳送資料。

Python開發之路

閱讀目錄 第一篇 python入門 第二篇 資料型別 字元編碼 檔案處理 第三篇 函式 第四篇 模組與包 第五篇 常用模組 第六篇 物件導向 第七篇 物件導向高階 第八篇 異常處理 第九篇 網路程式設計 第十篇 併發程式設計 第十一篇 mysql系列 更新中.閱讀目錄 第一篇 python入門 第二...

Python開發之路

閱讀目錄 詳細內容見老男孩 第一篇 python入門 第二篇 資料型別 字元編碼 檔案處理 第三篇 函式 第四篇 模組與包 第五篇 常用模組 第六篇 物件導向 第七篇 物件導向高階 第八篇 異常處理 第九篇 網路程式設計 第十篇 併發程式設計 第十一篇 mysql系列 更新中 源自 python開發...

Python開發之路

資料型別 字元編碼 檔案處理 內建函式 迭代器,生成器,裝飾器 模組與包 常用模組 正規表示式 物件導向高階 異常處理 網路程式設計 協程io模型 pymysql模組 索引原理 cssdom bomjquery ajax bootstrap bootstrap布局 bootstrap元件 boots...