首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

又一程序员被逼疯了,不了解编写规范,代码不能运行

我们不注意Python的编码规范,常常会导致代码不能正常运行。下面是一些对代码编写规则以及命名规范等进行介绍。

1.编写规则

Python采用PEP 8 的编码规范,接下来会讲解一些我们在学习Python过程应该严格遵守的条目。

●? 每个import语句只导入一个模块,尽量避免一次导入多个模块。

例如:

import?random

import?os

#尽量不要采取下面这种方式,分别导入

import?os,random

●? 不要在代码末尾加‘;’,也不要用分号将2条命令写在同一行。

例如:#不规范写法

a=1;

b=1;

c=1;d=1;

#规范写法

a?=?1

b?=?1

c?=?1

d?=?1

或者

a?=?b?=?c?=?d?=?1

●? 建议每行不超过80个字符,如果超过,建议用小括号“()”将多行内容连接起来,而不推荐使用反斜杠‘\’进行连接。

●? 使用必要的空行可以增加代码的可读性,一般在顶级定义之间空两行,而方法定义之间空一行。

●? 运算符两侧和函数参数之间建议使用空格进行分割。

●? 应该避免在循环中使用+和+=操作符累加字符串,这是因为字符串是不可变的,这样会创建不必要的临时对象,推荐做法是将每个字符串加入列表,然后循环结束后使用join()方法连接列表。

●? 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构。

2.命名规范

命名规范在代码中起到很重要的作用,尽管不规范命名的程序我们依然可以运行,但是会影响我们更方便理解代码。

下面来介绍一些命名规范:

●? 命名尽量短小并且使用小写字母,可以使用下划线分割多个字母,例如get_name、tom_home、asset,这些都是推荐使用的类型。(本小节存在不遵守此规范的实例,有兴趣的可以找一下)

●? 类名采用单词首字母大写的形式,例如,GetMoney,History等

●? 使用单下划线“_”开头的模块变量或者函数是受保护的,在使用import*from语句从模块中导入时这些变量或者函数不能被导入。

●? 使用双下划线?“__”开头的变量或方法是私有的。

3. 空格

按照标准的排版规范来使用标点两边的空格

括号内不要有空格.

下面是使用空格的规范:

●? 赋值符号“=”前后各有一个空格

●? 所有的二元运算符都应该使用空格与操作数分开

例如:a?+=?c?+?d

●? 括号内不要有空格,Python中括号包括小括号“0”、中括号“[]”和

●? 括号“{}"。

●? 不要在逗号、分号、冒号前面有空格。但应该在它们后面加(除了在行尾)。

Yes: if x == 4:

? ? ? print x, y

? x, y = y, x

No: ?if x == 4 :

? ? ? print x , y

? x , y = y , x

4.缩进

4个空格被认为是一个缩进,Python中的缩进类似于C语言中的‘{}’,在‘:’换行后一定要跟一个缩进,不然会出现语法错误。如果不正确使用缩进,就会出现SyntaxError错误。

Yes: ? # 与起始变量对齐

? ? foo = long_function_name(var_one, var_two,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var_three, var_four)

? ? # 字典中与起始值对齐

? ? foo = {

? ? ? ? long_dictionary_key: value1 +

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?value2,

? ? ? ? ...

? ? }

? ? # 4 个空格缩进,第一行不需要

? ? foo = long_function_name(

? ? ? ? var_one, var_two, var_three,

? ? ? ? var_four)

? ? # 字典中 4 个空格缩进

? ? foo = {

? ? ? ? long_dictionary_key:

? ? ? ? ? ? long_dictionary_value,

? ? ? ? ...

? ? }

No: ? ?# 第一行有空格是禁止的

? ?foo = long_function_name(var_one, var_two,

? ? ? ?var_three, var_four)

? ?# 2 个空格是禁止的

? ?foo = long_function_name(

? ? ?var_one, var_two, var_three,

? ? ?var_four)

? ?# 字典中没有处理缩进

? ?foo = {

? ? ? ?long_dictionary_key:

? ? ? ? ? ?long_dictionary_value,

? ? ? ? ? ?...

? ?}

5.分号

不要在行尾加分号, 也不要用分号将两条命令放在同一行。

6.行长度

每行不超过80个字符

以下情况除外:

长的导入模块语句

注释里的URL

不要使用反斜杠连接行。

Python会将?圆括号, 中括号和花括号中的行隐式的连接起来?, 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。

推荐: foo_bar(self, width, height, color='black', design=None, x='foo',

? ? ? ? ? emphasis=None, highlight=0)

? if (width == 0 and height == 0 and

? ? ? color == 'red' and emphasis == 'strong'):

如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:

x = ('这是一个非常长非常长非常长非常长 '

? '非常长非常长非常长非常长非常长非常长的字符串')

在注释中,如果必要,将长的URL放在一行上。

7.括号

除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的.

Yes: if foo:

? ? ? bar()

? while x:

? ? ? x = bar()

? if x and y:

? ? ? bar()

? if not x:

? ? ? bar()

? return foo

? for (x, y) in dict.items(): ...

No: ?if (x):

? ? ? bar()

? if not(x):

? ? ? bar()

? return (foo)

8.注释

最后再讲一下注释规则,大家会在本教程中看到很多很多的注释,注释穿插于代码中,‘#’为开始,换行即截止。

9.总结

本章就讲到这里,良好的编程习惯会帮助你成为一个优秀的开发人员,本章的内容大家可以在之后的学习过程中多多回顾,下一节我们来学习一下标识符和关键字。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201106A0BASP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com