如果我们用普通运行模式例如(linux) : python *.py 那么这个语句在此运行模式下无效。如果想让python程序像普通程序一样运行,例如:./*.py (文件要有可执行权限chmod a+x *.py),这个语句就起作用了,他用来为脚本语言指定解释器,通常认为用 #!/usr/bin/env python 要比 #!/usr/bin/python 更好,因为 python 解释器有时并不安装在默认路径,例如在虚拟环境中。
1、将原文件 f.readlines() 读到一个list中。2、先创建一个新文件,写新的内容,再写上面读到的list中的内容。
3、删除原文件,将新文件改名为原文件名。
如果没有特殊的编码要求,建议在文件头部加一行#-*-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()
很标准
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)