Python 3 Notes

2018-02-24 15:39 更新

Python 3 Notes

這部分文檔特別要求使用 Werkzeug 和 WSGI 的環(huán)境為 Python 3。

警告

Werkzeug 的 Python 3 支持目前只是實驗性的。所以有問題歡迎反饋以幫助我們來改善它。

WSGI 環(huán)境

Python 3 的 WSGI 環(huán)境和 Python 2 有一點不同。如果你使用高級的 API,Werkzeug會幫你隱藏這些區(qū)別的大部分。Python 2 和 Pyhton 3 最主要的區(qū)別是 Python 2 的WSGI 環(huán)境包含字節(jié),而 Python 3 包含一系列不同的編碼字符串。

在 Python 3 有兩種不同類型的 WSGI 環(huán)境:

  • unicode 字符串限制到 latin1 值。他們經(jīng)常用于 HTTP headers 信息和其他一些地方。
  • unicode 字符串?dāng)y帶二進制數(shù)據(jù),通過 latin1 值來回傳遞。這在 Werkzeug 通常被成為 “WSGI encoding dance” 。

Werkzeug 給你提供一些函數(shù)自動解決這些問題。所以你不需要關(guān)心內(nèi)部的實現(xiàn)。下面的函數(shù)和類可以用來讀取 WSGI 環(huán)境信息:

不推薦在 Python 3 中創(chuàng)造和修改 WSGI 環(huán)境除非確保能夠正確解碼。在 Werkzeug 中所有高級 API 接口能正確實現(xiàn)編碼和解碼。

URLs

在 Python 3 中 Werkzeug 的 URL 為 unicode 字符串。所有的解析函數(shù)一般會提供操作字節(jié)碼功能。在某些情況,URLs 處理函數(shù)允許字符集不改變返回一個字節(jié)對象。在內(nèi)部 Werkzeug 正盡可能統(tǒng)一 URIs 和 IRIs。

清理 Request

Python 3 和 PyPy 在上傳文件時,需要確保關(guān)閉 Request 對象。這要妥善關(guān)閉由多重解析創(chuàng)建的臨時文件。你可以使用 close() 方法。

除了請求對象還有上下文管理需要關(guān)閉,但是上下文管理可以自動關(guān)閉。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號