Python 样式指南

Fuchsia 项目遵循 Google Python 样式指南, 但进行了一些优化

Google Python 样式指南允许更多变化(大概是为了涵盖大量现有来源)。本指南的选择范围更窄。因此,Fuchsia Python 文件也符合 Google 样式指南,但 Google Python 文件可能不符合本指南。如需了解详情,请参阅下方的优化

Python 版本

Fuchsia 在结账时提供自己的 Python 3 解释器 (//scripts/fuchsia-vendored-python,截至 2026 年 8 月,当前为 Python 3.11 或更高版本)。

Fuchsia 代码库中的所有可执行 Python 脚本都必须以以下 Shebang 行开头:

#!/usr/bin/env fuchsia-vendored-python

如需了解详情,请参阅 RFC-0129构建系统政策

优化条件

我们对 Google Python 样式指南进行的以下优化主要是对不同变体之间的选择。例如,如果样式指南规定您可以执行 A、B 或 C,我们可能会选择偏向 B,并避免其他选择。

缩进

避免与开头的分隔符对齐。最好使用固定(4 个空格)缩进进行缩进。

(如需进行比较,请参阅 Google Python 样式指南中的 缩进 。)

对账单

避免创建单行语句,即使是 if 语句也是如此。

Yes:

    if foo:
        bar(foo)
No:

    if foo: bar(foo)

(如需进行比较,请参阅 Google Python 样式指南中的 语句 。)

类型注解

强烈建议为 Fuchsia 中的所有新 Python 代码添加类型注解。 请按照 Google Python 样式指南中的规定,遵循现代 Python (3.11+) 类型注解惯例:

  • PEP 585 标准集合: 直接使用内置集合类型作为泛型类型提示 (list[str]dict[str, int]set[Path]tuple[int, ...])。请勿从 typing 导入 ListDictSetTuple
  • PEP 604 联合语法: 使用 | 运算符表示联合类型 (int | floatstr | None)。请勿从 typing 导入 UnionOptional

字符串

最好使用双引号 (") 表示字符串。如果使用单引号声明更易于阅读,则使用单引号。例如,'The cat said "Meow"'"The cat said \\"Meow\\"" 更易于阅读。

对于字符串格式设置和插值,最好使用 f 字符串 (f"..."),而不是 % 格式设置或 .format()。为 f 字符串保留双引号。

(如需进行比较,请参阅 Google Python 样式指南中的 字符串 。)

保持一致

在较大范围内保持一致。避免在 Fuchsia 中显示少量一致性。仅在单个文件或目录中保持一致不是一致性。

third_party 中,目的是遵循该项目或库的现有样式。请根据需要查找该库中的样式指南。

(请参阅 结束语 在 Google Python 样式指南中。)