Python 样式指南

Fuchsia 项目遵循 Google Python 样式指南, 并进行了几项优化

Google Python 样式指南允许更多的变体(可能会涵盖大量 现有来源的广度)。本指南的选择更为严格。因此, Fuchsia Python 文件也将遵循 Google 样式指南,但 Python 文件可能不符合本指南的要求。请参阅优化 以了解详情。

Python 版本

build 调用的脚本

由构建(GN 或 Ninja)调用的脚本使用 Python 3.8 执行。

构建系统确保所有 Python 脚本都由 在 Fuchsia 源检出过程中安装的翻译器。

其他脚本

直接调用的脚本应使用 Shebang 中的 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 版本)的脚本中, 使用 分别为 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\\""

(请参阅 字符串 。)

保持一致

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

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

(请参阅 词句 。)