《Python 3.x入门到应用实践》 — 1.7 Python程序编写风格

举报
华章计算机 发表于 2020/02/08 21:52:19 2020/02/08
【摘要】 本节书摘来自华章计算机《Python 3.x入门到应用实践》 一书中第1章,第1.7.1节,作者是赵 军 等。

 1.7  Python程序编写风格

Python的设计哲学是优雅、明确与简单,与其他程序设计语言相比,Python语言的程序设计人员不需要耗费太多时间在语法的细节上,不过为了让程序的可读性高,Python语言还是有一些编写程序的惯例,例如运算符前后加上空白或设置每行的最大长度,本节就来看看有哪些需要注意的地方。好的程序编写惯例让大家有通用的原则可以遵循,下面以程序代码缩排为例进行说明。

Python程序中的区块主要是通过“缩排”来标示的,例如if/else:的下一行程序必须缩排:

score = 80

 

if score > 60:

    print("及格")

else:

    print("不及格")

   

    print("结束")

程序执行之后会得到如图1-43所示的结果。

 image.png

图1-43

从打开的范例程序“ch01/ch01.py”文件来看,程序代码中的else区块虽然第9行空了一行,但是第8行与第10行有同样的缩排距离,所以还是会被认为是else的同一区块。

下面我们修改第10行程序的缩排距离,使之和第8行程序的缩排距离不同,这样的话第10行程序就不属于else区块了,而是单独的一行程序,如图1-44所示。

程序的执行结果如图1-45所示。

   image.png

             图1-44                                     图1-45

通过上述范例说明,我们可以知道Python语言程序代码中的缩排对执行结果有着很大的影响。因为Python语言对于缩排的严谨,所以同一个区块的程序代码必须使用相同个数的空格符进行缩排,否则就会出现错误。一旦出现这种错误,在该行程序语句的左边就会出现 的提示图标,将鼠标移到 图标就会显示错误的原因,如图1-46所示。

 image.png

图1-46

可以使用空格键或Tab键产生空格来实现Python程序语句的缩排,笔者建议以4个空格为一组进行缩排(本书的所有范例程序均采用4个空格符进行缩排)。在Python编辑工具中,按Tab键默认产生4个空格。不过,当我们改用“记事本”之类的文本编辑器来编写Python程序时,按Tab键产生的间距并不一定是4个空格,这样就有可能造成程序无法执行的情况。为了避免发生这种情况,我们建议以4个空格为一组进行缩排,避免空格键或Tab键的混用。

1.7.1  编码声明

当我们在Spyder中新建文件时,其实并不是新建了完全空白的文件,默认会在文件的开始部分生成编码声明与注释文字,如图1-47所示。

 image.png

图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码扩展字符集的十进制代码与图形字符。

 image.png

图1-48

 image.png

图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编码,所以编码声明可以省略,但习惯上还是会加入编码声明。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。