首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Python 註解前面加引號是什麼意思?解讀 b"""...""" 語法

     編輯:程式設計綜合問答

現象:書上看到 SERVE_R_RESPONSE = b""" ... """,這是註解嗎?

初學者常誤以為三引號 """ ... """ 是「多行註解」,其實 **Python 沒有多行註解語法**,三引號只是**多行字串字面值**。若未賦值給變數、未作為表達式語句獨立存在,它只是會被建立後立即丟棄的字串物件,看起來像註解而已。

拆解 b""" ... """

符號含義
""" ... """三引號字串:可跨行、保留換行與縮排、可包含單雙引號不需跳脫
b 前綴Python 3 引入的 **bytes 字面值前綴**,表示這是 bytes 型別而非 str(Unicode 字串)
# Python 3
s = """這是 str (Unicode)"""
b = b"""這是 bytes (ASCII/二進位)"""
type(s)  # 
type(b)  # 

Python 2 vs Python 3 的關鍵差異

  • Python 2:str 就是位元組串,u"""...""" 才是 Unicode。b"""...""" 語法存在但 b 被忽略,等同無前綴。
  • Python 3:嚴格區分 str (Unicode) 與 bytes。網路傳輸、檔案 I/O、二進位協定**必須用 bytes**。b"""...""" 是產生 bytes 字面值的標準寫法。

相容寫法(支援 Py2/3 同時跑)

# Python 2 相容層
try:
    # Py3 已有 bytes
    pass
except NameError:
    # Py2
    b = lambda x: x
    bytes = str

實務用途

  • HTTP 回應原始資料:response = b\"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<html>...\"
  • 二進位協定封包:packet = b\"\\x01\\x02\\x03\\x04\"
  • 檔案寫入二進位:open('data.bin', 'wb').write(b\"\\x00\" * 1024)

常見誤區澄清

「三引號是註解」→ 錯。它是字串字面值。真正的註解只有 # 單行註解。
「b 是註解標記」→ 錯。b 是 bytes 型別前綴,與註解無關。
「Python 2 沒有 bytes」→ 半對。Py2 的 str 即 bytes,但語意不清,建議移植到 Py3 明確區分。

結語

b""" ... """ = bytes 型別的多行字串字面值。Python 3 強制 Unicode/bytes 分離,處理網路、檔案、二進位資料時**必須用 bytes**,這語法就是為此而生。別把它當註解,它是會佔記憶體、能傳輸、能寫檔的真實資料物件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved