Python 头部 usrbinpython 和 usrbinenv 的区别

Python 头部 usrbinpython 和 usrbinenv 的区别,第1张

大部分python文件的头部都会写上 #!/usr/bin/python 或者 #!/usr/bin/env ,这个语句主要和运行模式有关,

如果我们用普通运行模式例如(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()

很标准


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11868823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存