2.2 编码格式
2.2.1 代码缩进
Python采用代码缩进和冒号“:”区分代码之间的层次。缩进可以使用<Space>键或者<Tab>键实现。使用<Space>键时,通常情况下采用4个空格作为缩进量;而使用<Tab>键时,则将按一次<Tab>键产生的缩进作为缩进量。通常情况下建议使用<Space>键进行缩进。
在Python中,对于类定义、函数定义、流程控制语句,以及异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束,则表示一个代码块的结束。
例如,下面代码中的缩进为正确的缩进。
pwd = input("输入密码:").strip() # 要求输入密码,strip()方法用于去除空格 repwd = input("确认密码:").strip() # 要求输入确认密码,strip()方法用于去除空格 if pwd == repwd : # 判断密码是否一致 print("密码输入正确!") # 输出"密码输入正确!" else: print("确认密码与输入密码不一致!") # 输出"确认密码与输入密码不一致!"
Python对代码的缩进要求非常严格,同一个级别的代码块的缩进量必须相同。如果不进行合理的代码缩进,将抛出SyntaxError异常。例如,代码中有的缩进量是4个空格,还有的是3个空格,就会出现SyntaxError异常,如图2.1所示。
图2.1 缩进量不同导致的SyntaxError异常
在IDLE中,一般以4个空格作为基本缩进量。不过也可以选择“Options”→“Configure IDLE”命令,在打开的“Settings”对话框(如图2.2所示)的“Fonts/Tabs”选项卡中修改基本缩进量。
图2.2 修改基本缩进量
多学两招
在IDLE的文件窗口中,可以通过选择主菜单中的“Format”→“Indent Region”命令(或按快捷键<Ctrl+]>),将选中的代码进行缩进(向右移动指定的缩进量),也可通过选择主菜单中的“Format”→“Dedent Region”命令(或按快捷键<Ctrl+[>),对代码进行反缩进(向左移动指定的缩进量)。
2.2.2 编码规范
Python采用PEP 8作为编码规范,其中PEP是Python Enhancement Proposal的缩写,翻译成中文是Python增强建议书,而8表示版本号。PEP 8是Python代码的样式指南。下面给出PEP 8编码规范中的一些应该严格遵守的条目。
每个import语句只导入一个模块,尽量避免一次导入多个模块。图2.3所示为推荐写法,而图2.4所示为不推荐写法。
图2.3 推荐写法
图2.4 不推荐写法
不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。例如,图2.5所示的代码为不规范写法。
图2.5 不规范写法
建议每行不超过80个字符,如果超过,建议使用圆括号“()”将多行内容隐式地连接起来,而不推荐使用反斜线“\”进行连接。例如,某个字符串文本在一行上显示不完全,那么可以使用圆括号将其分行显示,代码如下。
print("虽然我是一只蜗牛,我一直在爬,也许还没有爬到金字塔的顶端," "但是只要我在爬,就足以给自己带来令生命感动的瞬间。")
例如,以下通过反斜线进行连接的做法是不推荐使用的。
print("虽然我是一只蜗牛,我一直在爬,也许还没有爬到金字塔的顶端,\ 但是只要我在爬,就足以给自己带来令生命感动的瞬间。")
不过以下两种情况除外。
导入模块的语句过长。
注释里的URL。
使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而在方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
通常情况下,在运算符两侧、函数参数之间、逗号“,”两侧建议使用空格进行分隔。
应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。
适当使用异常处理结构可提高程序的容错性,但不能过分依赖异常处理结构,适当的显式判断还是必要的。