Fuchsia 專案遵循 Google Python 樣式指南, 列出幾項修正項目
Google Python 樣式指南提供更多變化版本 (假設為 現有來源的廣度)本指南提供了更嚴格的選項。所以 Fuchsia Python 檔案同樣符合 Google 樣式指南,但 Google Python 檔案可能不符合本指南的要求。查看修正 。
Python 版本
建構作業叫用的指令碼
建構叫用的指令碼 (GN 或 Ninja) 會以 Python 3.8 執行。
建構系統會確保由 翻譯程序包含在 Fuchsia 來源結帳中。
其他字集
直接叫用的指令碼應在主要工作中使用 python
,且
相容於 2 和 3:#!/usr/bin/env python
。
開發 Fuchsia 模組的開發人員可能會使用多種平台。部分平台 包括 Python 2,而非 Python 3,反之亦然。直到 Python 3 同樣受到支援 Python 2。
儘管系統支援 Python 2,請在兩個版本上測試指令碼。
所有政策異動都會反映在本文件中。
多重繼承
強烈建議不要使用多重繼承。基於同樣的原因
記錄在
Google C++ 風格指南:有「鑽石」風險繼承
但很容易造成混淆如果偵測到案件
多個繼承是不合理的做法,而且所有加入的類別在初始階段都必須
繼承自基礎類別 object
,該類別管理了多項繼承
使用配置
使用 Unicode 處理文字
在支援 Python 2.x 的指令碼中 (請參閱 Python 版本),
明確將文字字串宣告為萬國碼 (Unicode) 和二進位資料 (使用
u""
、unicode()
、unichr()
和 b""
、bytes()
、byte()
。
Python 3.x 預設使用 Unicode 做為字串,因此本指南將
在停止支援 Python 2 時移除。
Yes:
a = u"Hello" # Unicode constant.
b = unicode(foo) # Convert to Unicode.
c = unichr(c) # Convert to Unicode.
d = io.open("bar.txt").read() # Read text as Unicode.
No:
a = "Hello" # Ambiguous (depends on Python version).
b = str(foo) # Convert to ascii.
c = chr(c) # Convert to ascii.
d = open("bar.txt").read() # Read text as ascii.
分類標籤
我們對 Google Python 樣式指南做了以下調整,主要是針對 在變化版本之間做出選擇舉例來說,如果風格指南顯示您可以執行 A、 B 或 C 則可以選擇優先採用 B,並避開其他選項。
縮排
避免與開頭分隔符號對齊。偏好使用固定選項縮排 (4 個空格) 縮排。
(詳情請參閱 縮排 。)
對帳單
避免建立單行陳述式,即使有 if
陳述式也一樣。
Yes:
if foo:
bar(foo)
No:
if foo: bar(foo)
(詳情請參閱 敘述 。)
類型註解
在支援 Python 2 的指令碼中 (請參閱 Python 版本), 系統不會使用型別註解。
(詳情請參閱 類型註解 。)
字串
字串偏好使用雙引號 ("
)。當宣告為
單引號可讓文件更清楚易懂。舉例來說,'The cat said "Meow"'
更容易閱讀
"The cat said \\"Meow\\""
。
(詳情請參閱 字串 。)
保持一致
在大範圍中保持一致。避免顯示小型的一致性 達成任務。在單一檔案或目錄中保持一致並不 保持一致
在 third_party
中,意圖是依循該專案的現有樣式
或程式庫請在該程式庫中尋找適用的風格指南。
(詳情請參閱 零件字詞 )。