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
中,目的是遵循该项目的现有样式
或内容库。根据需要在该库中查找样式指南。
(请参阅 词句 。)