在Python里,规范的注释和整洁的代码格式是养成良好编程习惯的关键。本文将介绍如何使用#单行注释、三引号文档字符串来注解代码,同时讲解缩进、命名、空格排版等标准编码规范。通过条理清楚的文字讲解、标准示例代码和效果对照,帮助学习者养成工整规范的编码习惯,轻松写出整洁易懂的Python程序。



注释类似于语文课本中古诗的注释,也就是在代码中添加的标注性的文字,帮助开发者更好的阅读代码。注释的内容会被解释器忽略,并不会在执行结果中体现出来。
在Python中,使用“#”作为单行注释的符号。从符号“#”开始直到换行为止,其后面所有的内容都作为注释的内容而被Python编辑器忽略。
语法如下:

单行注释可以放在要注释代码的前一行,也可以放在要注释代码的右侧。例如下面两种注释形式都是正确的。
第一种形式:

第二种形式:

上面两种形式运行效果都如下图:

注意:
1、注释可以出现在代码的任意位置,但是不能分隔关键字和标识符。
2、在添加注释时,一定要有意义,即注释能充分体现代码的作用,不可冗余。
3、在IDLE中可以通过Format-->Comment Out Region菜单项(也可利用快捷键Alt+3)将选中的代码注释掉。也可通过Format-->UnComment Region菜单项(也可利用快捷键Alt+4)取消添加的单行注释。
在python中,并没有一个单独的多行注释标记,而是将需要注释的内容包含在一对三引号('''注释内容''')或者("""注释内容""")之间,并且不属于任何语句的内容认为是注释。对于这样的代码,解释器将忽略。由于这样的代码可以分为多行书写,所以也作为多行注释。
语法格式如下:

或者

多行注释通常用来为Python文件、模块、类或者函数等添加版权、功能等信息。

注意:
在Python中,三引号('''注释内容''')或者("""注释内容""")是字符串定界符。所以,如果三引号作为语句的一部分出现,那么就不是注释,而是字符串,这一点要注意区分。
Python不像其他程序设计语言(如Java或C语言)采用大括号“{ }”分隔代码块,而是采用代码缩进和冒号“:”区分代码之间的层次。
缩进可以使用空格或者 Tab 键实现。其中,使用空格时,通常情况下采用 4 个空格作为一个缩进量,而使用 Tab 键时,则采用一个 Tab 键作为一个缩进量。通常情况下建议采用Tab键进行缩进。
在 Python 中,对于类定义、函数定义、流程控制语句,以及异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束,则表示一个代码块的结束。
例如,下边这段代码中的缩进即为正确的缩进。

Python 对代码的缩进要求非常严格,同一个级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出 SyntaxError 异常。例如,代码中有的缩进量是 4 个空格,还有的是 3 个空格,就会出现 SyntaxError 错误

在 IDLE 开发环境中,一般以 4 个空格作为基本缩进单位。不过也可以选择 Options→Configure IDLE 菜单项,在打开的 Settings 对话框(如下图所示)的 Fonts/Tabs 选项卡中修改基本缩进量。

四、编码规范
1. 编写规则
Python 中采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal 的缩写,翻译过来是 Python 增强建议书,而 PEP 8 表示版本,它是 Python 代码的样式指南。下面给出 PEP 8 编码规范中的一些应该严格遵守的条目。
✅ 每个 import 语句只导入一个模块,尽量避免一次导入多个模块。如图 1.1 所示为推荐写法,而如图 1.2 所示为不推荐写法。

图1.1 推荐写法

图1.2 不推荐写法
✅ 不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。例如,如图 1.3 所示的代码为不规范的写法。

图1.3 不规范写法
✅ 使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
✅ 通常情况,运算符两侧、函数参数之间、逗号“,”两侧建议使用空格进行分隔。
✅ 应该避免在循环中使用 += 和 + 操作符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐的做法是将每个子字符串加入列表,然后在循环结束后使用 join() 方法连接列表。
✅ 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显式判断还是必要的。
2. 命名规范
命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。下面将介绍 Python 中常用的一些命名规范。
✅ 模块名尽量短小,并且使用全部小写字母,可以使用下划线分隔多个字母。例如, game_main 、 game_register 、 bmiexponent 都是推荐使用的模块名称。
✅ 包名尽量短小,并且使用全部小写字母,不推荐使用下划线。例如, com.mingrisoft 、 com.mr.book 都是推荐使用的包名称,而 com_mingrisoft 就是不推荐的。
✅ 类名采用单词首字母大写形式(即 Pascal 风格)。例如,定义一个借书类,可以命名为 BorrowBook 。
✅模块内部的类采用下划线“_”+Pascal风格的类名组成。例如,在BorrowBook类中的内部类,可以使用_BorrowBook命名。
✅ 函数、类的属性和方法的命名规则同模块类似,也是全部采用小写字母,多个字母间用下划线“_”分隔。
✅ 常量命名时采用全部大写字母,可以使用下划线。
✅ 使用单下划线“_”开头的模块变量或者函数是受保护的,在使用 import * 语句从模块中导入时这些变量或者函数不能被导入。
✅ 使用双下划线“__”开头的实例变量或方法是类私有的。


更多精彩内容请关注本公众号
