《Python 3.x入门到应用实践》 — 1.7 Python程序编写风格
1.7 Python程序编写风格
Python的设计哲学是优雅、明确与简单,与其他程序设计语言相比,Python语言的程序设计人员不需要耗费太多时间在语法的细节上,不过为了让程序的可读性高,Python语言还是有一些编写程序的惯例,例如运算符前后加上空白或设置每行的最大长度,本节就来看看有哪些需要注意的地方。好的程序编写惯例让大家有通用的原则可以遵循,下面以程序代码缩排为例进行说明。
Python程序中的区块主要是通过“缩排”来标示的,例如if/else:的下一行程序必须缩排:
score = 80
if score > 60:
print("及格")
else:
print("不及格")
print("结束")
程序执行之后会得到如图1-43所示的结果。
图1-43
从打开的范例程序“ch01/ch01.py”文件来看,程序代码中的else区块虽然第9行空了一行,但是第8行与第10行有同样的缩排距离,所以还是会被认为是else的同一区块。
下面我们修改第10行程序的缩排距离,使之和第8行程序的缩排距离不同,这样的话第10行程序就不属于else区块了,而是单独的一行程序,如图1-44所示。
程序的执行结果如图1-45所示。
图1-44 图1-45
通过上述范例说明,我们可以知道Python语言程序代码中的缩排对执行结果有着很大的影响。因为Python语言对于缩排的严谨,所以同一个区块的程序代码必须使用相同个数的空格符进行缩排,否则就会出现错误。一旦出现这种错误,在该行程序语句的左边就会出现 的提示图标,将鼠标移到 图标就会显示错误的原因,如图1-46所示。
图1-46
可以使用空格键或Tab键产生空格来实现Python程序语句的缩排,笔者建议以4个空格为一组进行缩排(本书的所有范例程序均采用4个空格符进行缩排)。在Python编辑工具中,按Tab键默认产生4个空格。不过,当我们改用“记事本”之类的文本编辑器来编写Python程序时,按Tab键产生的间距并不一定是4个空格,这样就有可能造成程序无法执行的情况。为了避免发生这种情况,我们建议以4个空格为一组进行缩排,避免空格键或Tab键的混用。
1.7.1 编码声明
当我们在Spyder中新建文件时,其实并不是新建了完全空白的文件,默认会在文件的开始部分生成编码声明与注释文字,如图1-47所示。
图1-47
程序的第一行是编码声明(Encoding Declaration),为什么需要编码声明呢?这是因为计算机的集成电路简单来说只有“开”与“关”两种状态,正因为计算机实际上只能记录0和1,所以当要存取字符或字母时,就必须通过编码系统来进行转换。下面我们来认识字符和字母的编码。
1. ASCII编码
为了整合计算机信息交换的共同标准,美国国家标准学会制定了一套信息交换码,称为ASCII,是最早也是常用的英文编码系统。ASCII以8个比特(bit)表示一个字符,不过最左边的1个比特为校验位,因而实际上只能用7个比特来表示字符字母的编码(参考图1-48)。也就是说,ASCII编码最多可以表示128(27)个不同的字符和字母,可以表示大小写英文字母、数字、符号及各种控制字符。例如,ASCII码的字母A编码为1000001,字母a编码为1100001。而扩展ASCII码允许将每个字符的第8个比特用于确定附加的128个特殊符号字符、外来语字母和图形符号。如图1-49所示为ASCII码扩展字符集的十进制代码与图形字符。
图1-48
图1-49
2. GBK编码
中文最常用的是GBK编码系统,以16个比特(bit)来表示,最多可表示65 536(216)个字符,每个中文字占用2个字节(byte)。GBK全称为《汉字内码扩展规范》,GBK即“国标”“扩展”汉语拼音的第一个字母,英文名称为Chinese Internal Code Specification。GBK包含国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含中国港台地区BIG5编码中的所有汉字。
3. Unicode与UTF-8编码
由于全世界有许多不同的语言,甚至是同一种语言(如中文)也可能会有不同的内码,因此为了解决世界各国和地区各种编码不兼容的问题,国际标准ISO/IEC制订了一套全球通用的编码标准“Unicode”,又称为“统一码”或“万国码”。Unicode也是以16个比特(bit)来表示一个字符的,共可表示65 536个字符。Unicode编码字符集包含各个国家和地区的标准字集,解决了在不同语言操作系统中的乱码问题。
常见的Unicode标准中,最常使用的是UTF-8(8-bit Unicode Transformation Format),它是以8比特为一个单位,不同的文字采用不固定的字符长度,因为是可变长度的字符编码,占用的空间比较小,是现在许多电子邮件、网页及程序设计语言使用的编码方式。
Python 2.x是以ASCII编码的,如果Python程序代码包含中文,执行就会出错,所以必须声明编码方式。
声明编码方式只能放在文件第1行或第2行,格式如下:
# -*- coding: 编码名称 -*-
例如指定UTF-8编码,可以如下表示:
# -*- coding: utf-8 -*-
其中,“-*-”只是为了醒目,并没有实际的作用,可以省略如下:
# coding:utf-8
Python 3.x默认使用UTF-8编码,所以编码声明可以省略,但习惯上还是会加入编码声明。
- 点赞
- 收藏
- 关注作者
评论(0)