Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9e6fc83

Browse files
authored
Update README.md
1 parent b17d607 commit 9e6fc83

File tree

1 file changed

+98
-25
lines changed

1 file changed

+98
-25
lines changed

‎README.md

Lines changed: 98 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,21 @@
4444

4545
<h4 id="1">简介</h4>
4646
许多工程项目都有自己独有的编码风格指南。如果发生任何规则冲突,当然是与项目级别的代码风格保持一致。美其名曰:入乡随俗,Do what Romans do in Rome,到了罗马就跟着吃马肉,生在唐朝就吃胖点。
47+
4748
<h4 id="2">愚蠢的一致性是小心灵的大地精</h4>
48-
代码风格一致性当然重要,毕竟读起来跟做spa一样爽,但有时也要有自己的判断,不要跟个傻X一样,明明是个90后,非得穿丝袜。
49-
例如以下场景:
50-
1、遵循此风格让你的那一小片代码看起来格格不入,清高的不行。
49+
代码风格一致性当然重要,毕竟读起来跟做spa一样爽,但有时也要有自己的判断,不要跟个傻X一样,明明是个90后,非得穿丝袜。
50+
51+
例如以下场景:
52+
53+
1、遵循此风格让你的那一小片代码看起来格格不入,清高的不行。
54+
5155
2、遵循此风格后和其他 python 版本不兼容,甚至出现错误。
56+
5257
<h4 id="3">代码布局</h4>
58+
5359
<h5 id="3.1">缩进</h5>
54-
一个缩进级别四个空格。
60+
一个缩进级别四个空格。
61+
5562
* 连续行使用两种方式使封装元素成为一行:括号内垂直隐式连接和悬挂式缩进,使用悬挂式缩进应该注意第一行不应该有参数,连续行要使用进一步的缩进来区分。
5663

5764
```Python
@@ -106,12 +113,17 @@ result = some_function_that_takes_arguments(
106113
```
107114

108115
<h5 id="3.2">A罩杯还是C罩杯?</h5>
109-
除非项目中已经约定了使用 tab 作为缩进,最好使用 space。
116+
除非项目中已经约定了使用 tab 作为缩进,最好使用 space。
117+
110118
Python 3 不允许 tab 和 space 混用,同时混用了 tab 和 space 的 Python 2 代码应该被转换为仅使用 space。
119+
111120
<h5 id="3.3">代码行最大长度</h5>
112-
将所有行限制为最多79个字符。
113-
对于具有较少结构限制(文档字符串或注释)的长文本块,行长度应限制为72个字符。
114-
当然了,不要问为啥非得是 79,72。我们要兼顾非洲大陆人民的生活。代码是全世界的。
121+
将所有行限制为最多79个字符。
122+
123+
对于具有较少结构限制(文档字符串或注释)的长文本块,行长度应限制为72个字符。
124+
125+
当然了,不要问为啥非得是 79,72。我们要兼顾非洲大陆人民的生活。代码是全世界的。
126+
115127
反斜杠有时可能仍然要用。 例如,又多又长的 with - 语句不能使用隐式连接,这时反斜杠是可以接受的:
116128

117129
```Python
@@ -121,8 +133,9 @@ with open('/path/to/some/file/you/want/to/read') as file_1, \
121133
```
122134

123135
assert 语句也是如此。
136+
124137
<h5 id="3.4">在二元运算符之前还是之后断行?</h5>
125-
算法和程序设计技术先驱,计算机排版系统 TEX 和 METAFONT 的发明者 Donald Knuth,推荐使用以下形式:
138+
算法和程序设计技术先驱,计算机排版系统 TEX 和 METAFONT 的发明者 Donald Knuth,推荐使用以下形式:
126139

127140
```Python
128141
# Yes: easy to match operators with operands
@@ -134,15 +147,22 @@ income = (gross_wages
134147
```
135148

136149
只要保持本地一致性,在二元运算符之前和之后断开都是允许的,但是新的 Python 代码推荐使用 Knuth 形式。
150+
137151
<h5 id="3.5">空行</h5>
138-
顶层函数和类定义使用两个空行。
139-
类内方法定义使用一个空行。
140-
不同函数组之间使用额外的空行隔离。
141-
总之,空行的作用就是隔离不同函数类等,层次分明。
152+
顶层函数和类定义使用两个空行。
153+
154+
类内方法定义使用一个空行。
155+
156+
不同函数组之间使用额外的空行隔离。
157+
158+
总之,空行的作用就是隔离不同函数类等,层次分明。
159+
142160
<h5 id="3.6">源文件编码</h5>
143-
Python 2 默认ASCII,Python 3 默认UTF-8。
144-
使用 ASCII 的 Python 2 源文件或使用 UTF-8 的 Python 3 源文件不应该有编码声明。
145-
源文件最好只使用 ASCII 字符,即使是蹩脚的 Chinglish 亦可,家和万事兴。
161+
Python 2 默认ASCII,Python 3 默认UTF-8。
162+
163+
使用 ASCII 的 Python 2 源文件或使用 UTF-8 的 Python 3 源文件不应该有编码声明。
164+
165+
源文件最好只使用 ASCII 字符,即使是蹩脚的 Chinglish 亦可,家和万事兴。
146166

147167
<h5 id="3.7">模块导入</h5>
148168

@@ -154,27 +174,30 @@ YES: from subprocess import Popen, PIPE
154174
NO: import sys, os
155175
```
156176

157-
模块导入总是位于文件顶部,在模块注释和文档字符串之后,模块全局变量和常量之前。
158-
导入应该按照以下顺序分组,不同组间用空行隔离。
177+
模块导入总是位于文件顶部,在模块注释和文档字符串之后,模块全局变量和常量之前。
178+
179+
导入应该按照以下顺序分组,不同组间用空行隔离。
180+
159181
* 标准库 imports
160182
* 相关第三方 imports
161183
* 本地特定应用/库 imports
162-
推荐使用绝对导入,标准库代码应总是使用绝对导入。
184+
推荐使用绝对导入,标准库代码应总是使用绝对导入。
163185

164186
```Python
165187
import mypkg.sibling
166188
from mypkg import sibling
167189
from mypkg.sibling import example
168190
```
169191

170-
在包结构比较复杂时,可以使用相对导入。
192+
在包结构比较复杂时,可以使用相对导入。
171193

172194
```Python
173195
from . import sibling
174196
from .sibling import example
175197
```
176198

177-
在 Python 3 中,相对导入已经被删除,禁止使用。
199+
在 Python 3 中,相对导入已经被删除,禁止使用。
200+
178201
类导入:
179202

180203
```Python
@@ -189,15 +212,16 @@ import myclass
189212
import foo.bar.yourclass
190213
```
191214

192-
然后使用 myclass.MyClass 和 foo.bar.yourclass.YourClass。
215+
然后使用 myclass.MyClass 和 foo.bar.yourclass.YourClass。
216+
193217
请不要使用以下方式:
194218

195219
```Python
196220
from <module> import *
197221
```
198222

199223
<h5 id="3.8">模块级别 dunder 名称</h5>
200-
模块级别 "dunders"(即具有两个前导和两个后缀下划线的名称),例如 \_\_all\_\_,\_\_author\_\_,\_\_version\_\_ 等应放在模块 docstring 之后,但在任何 import 语句之前,但是除了 \_\_future\_\_ 导入。 Python 强制 future-imports 必须在除了 docstrings 之外的任何其他代码之前出现在模块中。
224+
模块级别 "dunders"(即具有两个前导和两个后缀下划线的名称),例如 __all__,\_\_author\_\_,\_\_version\_\_ 等应放在模块 docstring 之后,但在任何 import 语句之前,但是除了 \_\_future\_\_ 导入。 Python 强制 future-imports 必须在除了 docstrings 之外的任何其他代码之前出现在模块中。
201225
例如:
202226

203227
```Python
@@ -216,6 +240,55 @@ import os
216240
import sys
217241
```
218242

219-
<h5 id="4">字符串引号</h5>
220-
在 Python 中,单引号和双引号是等价的,只需要坚持使用一种并保持一致即可。
243+
<h4 id="4">字符串引号</h4>
244+
在 Python 中,单引号和双引号是等价的,只需要坚持使用一种并保持一致即可。
245+
221246
在双引号中使用单引号,单引号中使用双引号。三引号中使用双引号。
247+
248+
<h4 id="5">表达式和语句中的空格</h4>
249+
<h5 id="5.1">心理藏的小烦恼</h5>
250+
在以下场景避免不必要的空格
251+
252+
```Python
253+
Yes: spam(ham[1], {eggs: 2})
254+
No: spam( ham[ 1 ], { eggs: 2 } )
255+
256+
Yes: foo = (0,)
257+
No: bar = (0, )
258+
259+
Yes: if x == 4: print x, y; x, y = y, x
260+
No: if x == 4 : print x , y ; x , y = y , x
261+
262+
Yes:
263+
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
264+
ham[lower:upper], ham[lower:upper:], ham[lower::step]
265+
ham[lower+offset : upper+offset]
266+
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
267+
ham[lower + offset : upper + offset]
268+
269+
No:
270+
ham[lower + offset:upper + offset]
271+
ham[1: 9], ham[1 :9], ham[1:9 :3]
272+
ham[lower : : upper]
273+
ham[ : upper]
274+
275+
Yes: spam(1)
276+
No: spam (1)
277+
278+
Yes: dct['key'] = lst[index]
279+
No: dct ['key'] = lst [index]
280+
281+
Yes:
282+
x = 1
283+
y = 2
284+
long_variable = 3
285+
286+
No:
287+
x = 1
288+
y = 2
289+
long_variable = 3
290+
291+
```
292+
293+
<h5 id="5.2">其他建议</h5>
294+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /