python需要标准吗?

如题所述

如果没有特殊的编码要求,建议在文件头部加一行#-*-encoding:utf-8-*-标识,声明文件的编码方式,当然,程序文件的编码要和声明的编码保持一致,使用UTF-8编码。

2.缩进/空格/空行/换行等基本格式

缩进:统一使用4个空格进行缩进。通常使用1个Tab键,但Tab键不一定使4个空格键,所以有时候因此出错。

行宽:每行代码尽量不超过80个字符,但不是严格要求80字符以内,可略微查过。如果代码过长,说明代码设计不太合理。除此之外也方便于在控制台查看代码以及通过对side-by-side的diff时有帮助。


如果没有特殊的编码要求,建议在文件头部加一行#-*-encoding:utf-8-*-标识,声明文件的编码方式,当然,程序文件的编码要和声明的编码保持一致,使用UTF-8编码。

2.缩进/空格/空行/换行等基本格式

缩进:统一使用4个空格进行缩进。通常使用1个Tab键,但Tab键不一定使4个空格键,所以有时候因此出错。

行宽:每行代码尽量不超过80个字符,但不是严格要求80字符以内,可略微查过。如果代码过长,说明代码设计不太合理。除此之外也方便于在控制台查看代码以及通过对side-by-side的diff时有帮助。

引号:

自然语言字符串一般使用双引号;

机器标示使用单引号,例如字典中的key;

正则表达式使用原生双引号:r"...";

文档字符串使用三个双引号:"""......""",例如函数注释,对函数参数、返回值的说明等;

空行:

模块级函数和定义类之间空两行

类成员函数之间空一行

例如:

classA:

def__init__(self):

pass

defhello(self):

pass

defmain():

pass

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

(函数中可以使用空行分隔出逻辑相关的代码)

空格:

在二元运算符两边各空一格[=,-,+=,==,>,in,isnot,and]

#规范

i=i+1

submitted+=1

x=x*2-1

hypot2=x*x+y*y

c=(a+b)*(a-b)

#不规范

i=i+1

submitted+=1

x=x*2-1

hypot2=x*x+y*y

c=(a+b)*(a-b)

1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7

8

9

10

11

12

13

函数的参数列表中,,,#,;之后要有空格

例如

#规范

defcomplex(real,imag):

pass

#不规范

defcomplex(real,imag):

pass

1

2

3

4

5

6

7

1

2

3

4

5

6

7

函数的参数列表中,默认值等号两边不要添加空格

#规范

defcomplex(real,imag=0.0):

pass

#不规范

defcomplex(real,imag=0.0):

pass

1

2

3

4

5

6

7

1

2

3

4

5

6

7

左括号之后,右括号之前不要加多余的空格

#规范

spam(ham[1],{eggs:2})

#不规范

spam(ham[1],{eggs:2})

1

2

3

4

5

1

2

3

4

5

字典对象的左括号之前不要多余的空格

#规范

dict['key']=list[index]

#不规范

dict['key']=list[index]

1

2

3

4

5

1

2

3

4

5

不要为对齐赋值语句而使用的额外空格

#规范

x=1

y=2

long_variable=3

#不规范

x=1

y=2

long_variable=3

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

换行:

Python支持括号内的换行。这时有5种情况,如下:

(1)第二行缩进到括号的起始处

foo=long_function_name(var_one,var_two,

var_three,var_four)

1

2

1

2

(2)第二行缩进4个空格,适用于起始括号就换行的情

deflong_function_name(

var_one,var_two,var_three,

var_four):

pass

1

2

3

4

1

2

3

4

(3)使用反斜杠换行。二元运算符+、.等应出现在行末;长字符串也可以用此法换行

session.query(MyTable).

filter_by(id=1).

one()

print'Hello,'

'%s%s!'%

('Harry','Potter')

1

2

3

4

5

6

7

1

2

3

4

5

6

7

(4)禁止复合语句。即一行中包含多个语句:

#规范

do_first()

do_second()

do_third()

#规范

do_first();do_second();do_third();

1

2

3

4

5

6

7

1

2

3

4

5

6

7

(5)if/for/while要换行。

例如if:

#规范

iffoo=='blah':

do_blah_thing()

#不规范

iffoo=='blah':do_blash_thing()

1

2

3

4

5

6

1

2

3

4

5

6

import语句

import语句应该分行书写,如:

#规范

importos

importsys

fromsubprocessimportPopen,PIPE

#不规范

importsys,os

1

2

3

4

5

6

7

1

2

3

4

5

6

7

import语句应该使用absoluteimport

#规范

fromfoo.barimportBar

#不规范

from..barimportBar

1

2

3

4

5

1

2

3

4

5

import语句应该放在文件头部,置于模块说明及docstring之后,于全局变量之前

import语句应该按照顺序排列,每组之间用一个空行分隔(也就是说同一类型的在一块)

导入其他模块的类定义时,可以使用相对导入

frommyclassimportMyClass

1

1

如果发生命名冲突,则可使用命名空间

importbar

importfoo.bar

bar.Bar()

foo.bar.Bar()

很标准


温馨提示:答案为网友推荐,仅供参考
相似回答