Merge pull request #150 from LouYu2015/pull-request

更新《Python风格规范》并添加《HTML/CSS 风格指南》的目录
This commit is contained in:
Yang.Y 2023-04-17 16:17:38 +08:00 committed by GitHub
commit 0bbeb81331
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 999 additions and 771 deletions

View File

@ -14,3 +14,4 @@
google-shell-styleguide/contents
google-javascript-styleguide/contents
google-typescript-styleguide/contents
google-html-css-styleguide/contents

View File

@ -0,0 +1,17 @@
.. _html_css_contents:
HTML/CSS 风格指南 - 内容目录
==============================
.. toctree::
background
general_style_rules
general_formatting_rules
general_meta_rules
html_style_rules
html_formatting_rules
css_style_rules
css_formatting_rules
css_meta_rules
parting_words

View File

@ -19,11 +19,11 @@
`guoqiao <http://guoqiao.me/>`_ v2.19
`xuxinkun <https://github.com/xuxinkun>`_ v2.59
`captainfffsama <https://github.com/captainfffsama>`_ v2.6
`楼宇 <https://github.com/LouYu2015>`_ 2023 年 4 月 5 日更新
`楼宇 <https://github.com/LouYu2015>`_ 2023 年 4 月 16 日更新
:项目主页:
- `Google Style Guide (英文原版) <https://github.com/google/styleguide>`_
- `Google 开源项目风格指南 - 中文版 <http://github.com/zh-google-styleguide/zh-google-styleguide>`_
:协议:
Python风格指南的源代码采用Apache License 2.0协议, 文本内容采用 `CC-BY 3.0 <https://creativecommons.org/licenses/by/3.0/>`_ 协议.
Python风格指南的源文件采用Apache License 2.0协议, 文本内容采用 `CC-BY 3.0 <https://creativecommons.org/licenses/by/3.0/>`_ 协议.

View File

@ -1,23 +1,8 @@
临别赠言
================================
**务必保持代码的一致性**
**务必保持一致性.**
如果你正在编辑代码, 花几分钟看一下周边代码, 然后决定风格. 如果它们在所有的算术操作符两边都使用空格, 那么你也应该这样做. 如果它们的注释都用标记包围起来, 那么你的注释也要这样.
编辑代码时, 请花几分钟观察一下周边代码的风格. 如果这些代码在所有运算符的周围加上了空格, 那么你也应该这样做. 如果这些代码的注释都用井号形成的框包围起来, 那么你的注释也要用井号形成的框包起来.
制定风格指南的目的在于让代码有规可循, 这样人们就可以专注于"你在说什么", 而不是"你在怎么说". 我们在这里给出的是全局的规范, 但是本地的规范同样重要. 如果你加到一个文件里的代码和原有代码大相径庭, 它会让读者不知所措. 避免这种情况.
.. line-block::
Revision 2.60
Amit Patel
Antoine Picard
Eugene Jhong
Gregory P. Smith
Jeremy Hylton
Matt Smart
Mike Shields
Shane Liebling
制定风格指南是为了像字典一样让代码有章可循. 这样人们可以专注于"写什么", 而不是纠结"怎么写". 我们在这里列出的全局规范就像字典, 但是局部的规范同样重要. 如果你添加的代码和周围原有的代码大相径庭, 就会打乱读者的阅读节奏. 不要这样.

View File

@ -5,7 +5,7 @@ Lint
--------------------
.. tip::
`pylintrc <https://google.github.io/styleguide/pylintrc>`_ 运行 pylint以检查你的代码.
`pylintrc <https://google.github.io/styleguide/pylintrc>`_ 运行 pylint, 以检查你的代码.
定义:
pylint 是在 Python 代码中寻找 bug 和格式问题的工具. 它寻找的问题就像 C 和 C++ 这些更静态的(译者注: 原文是less dynamic)语言中编译器捕捉的问题. 出于Python的动态特性, 部分警告可能有误. 不过, 误报应该不常见.
@ -43,6 +43,7 @@ Lint
def viking_cafe_order(spam: str, beans: str, eggs: str | None = None) -> str:
del beans, eggs # 未被维京人使用.
return spam + spam + spam
(译者注Viking 意为维京人.)
其他避免这种警告的常用方法还有: 用`_`作为未使用参数的名称; 给这些参数名加上前缀 ``unused_``; 或者把它们赋值给变量 ``_``. 我们允许但是不再推荐这些方法. 这会导致调用者无法通过参数名来传参,也不能保证变量确实没被引用。
@ -497,35 +498,35 @@ Lambda函数
...
特性(properties)
特性 (properties)
--------------------
(译者注:参照fluent python.这里将 "property" 译为"特性",而 "attribute" 译为属性. python中数据的属性和处理数据的方法统称属性"(arrtibute)", 而在不改变类接口的前提下用来修改数据属性的存取方法我们称为"特性(property)".)
.. tip::
可以用特性来读取、写入涉及简单计算、逻辑的属性. 特性的实现必须和属性一样满足这些通用要求: 轻量、直白、明确.
可以用特性来读取或设置涉及简单计算、逻辑的属性. 特性的实现必须和属性 (attribute) 一样满足这些通用要求: 轻量、直白、明确.
定义:
把读取、写入属性的函数包装为常规属性操作的写法.
把读取、设置属性的函数包装为常规属性操作的写法.
优点:
#. 可以直接实现属性的访问、赋值接口, 而不必添加访问函数 (getter) 和变异函数 (setter).
#. 可以直接实现属性的访问、赋值接口, 而不必添加获取器 (getter) 和设置器 (setter).
#. 可以让属性变为只读.
#. 可以实现惰性求值.
#. 类的内部实现发生变化时, 可以用这种方法让用户看到的公开接口保持不变.
缺点:
#. 可能掩盖副作用, 类似运算符重载.
#. 可能掩盖副作用, 类似运算符重载 (operator overload).
#. 子类继承时可能产生困惑.
结论:
允许使用特性, 但是, 和运算符重载一样, 只能在必要时使用, 并且要模仿常规属性的存取特点. 若无法满足要求, 请参考访问函数和变异函数的规则.
允许使用特性. 但是, 和运算符重载一样, 只能在必要时使用, 并且要模仿常规属性的存取特点. 若无法满足要求, 请参考 :ref:`设置器和写入器 <getter_setter>` 的规则.
举个例子, 一个特性不能仅仅用于获取和设置一个内部属性: 因为不涉及计算, 没有必要用特性 (应该把该属性设为公有). 而用特性来限制属性的访问或者计算 **简单** 的衍生值则是正确的: 这种逻辑简单明了.
应该用 ``@property`` `装饰器 <http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Function_and_Method_Decorators>`_ 来创建特性. 自行实现的特性装饰器属于威力过大的功能.
应该用 ``@property`` `装饰器 (decorator) <http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Function_and_Method_Decorators>`_ 来创建特性. 自行实现的特性装饰器属于威力过大的功能.
特性的继承机制难以理解. 不要用特性实现子类能覆或扩展的计算功能.
特性的继承机制难以理解. 不要用特性实现子类能覆写 (override) 或扩展的计算功能.
True/False的求值
--------------------
@ -581,7 +582,7 @@ True/False的求值
#. 注意, Numpy 数组转换为布尔值时可能抛出异常. 因此建议用 `.size` 属性检查 ``np.array`` 是否为空 (例如 ``if not users.size``).
词法作用域(Lexical Scoping, 又名静态作用域)
-----------------------------
---------------------------------------------
.. tip::
可以使用.
@ -701,7 +702,7 @@ True/False的求值
现代python: from __future__ imports
--------------------
--------------------------------------
.. tip::
可以通过导入 ``__future__`` 包, 在较老的运行时上启用新语法, 并且只在特定文件上生效.

File diff suppressed because it is too large Load Diff