Python 樣式指南

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 中,意圖是依循該專案的現有樣式 或程式庫請在該程式庫中尋找適用的風格指南。

(詳情請參閱 零件字詞 )。