type
status
date
slug
summary
tags
category
icon
一、Python 风格指南
(一)背景
许多团队使用 yapf 作为自动格式化工具以避免格式不一致。
我觉得 black 更好用。
(二)Python 语言规范
1. 导入
我发现,很多程序员喜欢把要用的外置函数放在”./utils“中,但是 Python 自带也有一个包叫做
utils
,所以在运行别人的程序的时候经常报错。我的解决办法是:
2. 推导式&生成式
禁止多重 for 语句或过滤器表达式。
虽然风格指南里说得很委婉,但是各位程序员别装逼!一行里面两三个
for
真的很不利于 debug。3. True/False的求值
- 定义:
Python 在布尔上下文中会将某些值求值为 false,按简单的直觉来讲,就是所有的”空”值都被认为是 false。因此 0,None,[],{},”” 都被认为是 false。
- 结论
永远不要用==
将一个布尔量与 false 相比较。使用if not x:
代替。如果你需要区分 false 和 None,你应该用像if not x and x is not None:
这样的语句。
4. 代码类型注释
在必须支持老版本 python 运行的代码中则可以这样注释:
非常不喜欢这种注释,只要代码稍长,经过代码格式化之后会变得非常奇怪。
(三)Python 风格规范
1. 行长度
在注释中,如果必要,将长的URL放在一行上。
代码格式化工具似乎会直接忽略注释。
2. 缩进
用4个空格来缩进代码
绝对不要用 tab,也不要 tab 和空格混用。……
在 Visual Studio Code 中,tab 和空格似乎是等效的。我也一直习惯使用 tab, anyway,勤奋地进行代码格式化就好。
3. 注释
我们对文档字符串的惯例是使用三重双引号 ”””( PEP-257 )。
Args: 列出每个参数的名字,并在名字后使用一个冒号和一个空格,分隔对该参数的描述。如果描述太长超过了单行 80 字符,使用 2 或者 4 个空格的悬挂缩进(与文件其他部分保持一致)。描述应该包括所需的类型和含义。如果一个函数接受 foo(可变长度参数列表)或者 **bar(任意关键字参数),应该详细列出 foo 和 **bar。
Returns:(或者 Yields:用于生成器) 描述返回值的类型和语义.。如果函数返回 None,这一部分可以省略。
Raises: 列出与接口有关的所有异常.
另一方面,绝不要描述代码。假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么。
4. 字符串
避免在循环中用 + 和 += 操作符来累加字符串。由于字符串是不可变的,这样做会创建不必要的临时对象,并且导致二次方而不是线性的运行时间。
在同一个文件中,保持使用字符串引号的一致性。使用单引号’或者双引号”之一用以引用字符串,并在同一文件中沿用。在字符串内可以使用另外一种引号,以避免在字符串中使用。
5. 命名
模块名写法:
module_name
;包名写法: package_name
;类名: ClassName
;方法名: method_name
;异常名: ExceptionName
;函数名: function_name
;全局常量名: GLOBAL_CONSTANT_NAME
;全局变量名: global_var_name
;实例名: instance_var_name
;函数参数名: function_parameter_name
;局部变量名: local_var_name
。函数名,变量名和文件名应该是描述性的,尽量避免缩写,特别要避免使用非项目人员不清楚难以理解的缩写,不要通过删除单词中的字母来进行缩写.。始终使用 .py
作为文件后缀名,不要用破折号。命名约定:
对类名使用大写字母开头的单词(如 CapWords,即 Pascal 风格),但是模块名应该用小写加下划线的方式(如 lower_with_under.py),尽管已经有很多现存的模块使用类似于 CapWords.py 这样的命名,但现在已经不鼓励这样做,因为如果模块名碰巧和类名一致,这会让人困扰。
Python 之父 Guido 推荐的规范
Type
Public
Internal
这是我认为,风格指南中最重要的部分。许多论文的代码中都喜欢用大写驼峰命名法,应该是学生把 Javascript 中的命名规范照搬到 Python 中了。
(四)参考
二、Javascript 风格指南
(一)Javascript 语言规范
1. 常量
如果一个值是恒定的,它命名中的字母要全部大写(如CONSTANT_VALUE_CASE
)。字母全部大写意味着这个值不可以被改写
2. with() {}
不建议使用。
(二)Javascript 风格规范
1. 命名
通常来说,使用functionNamesLikeThis
,variableNamesLikeThis
,ClassNamesLikeThis
,EnumNamesLikeThis
,methodNamesLikeThis
,CONSTANT_VALUES_LIKE_THIS
,foo.namespaceNamesLikeThis.bar
和filenameslikethis.js
这种格式的命名方式。
文件名:
为了避免在大小写敏感的平台上引起混淆,文件名应该小写。文件名应该以.js
结尾,并且应该不包含除了-
或_
(相比较_
更推荐-
)以外的其它标点。
2. 字符串
使用'
代替"
。使用单引号('
)代替双引号("
)来保证一致性。当我们创建包含有HTML的字符串时这样做很有帮助。