随着程序越来越大,越来越复杂,其阅读难度也是越来越大。正式语言是庞杂晦涩的,通常很难查看其中一段代码就弄明白它在做什么和这么做的原因。
出于这个原因,在程序中添加一些用自然语言说明程序的作用的文字,这是一个很好习惯。 这些说明文字就叫做注释,一般以 # 开始。
# compute the percentage of the hour that has elapsed
percentage = (minute * 100) / 60
在这个例子中,注释内容是单独一行显示的。当然你也可以把注释放在代码行的最后:
percentage = (minute * 100) / 60
# percentage of an hour
每一行代码中从 # 开始的内容都会被忽略——这部分内容对程序无任何影响。
注释在记录程序代码的非明显特性的时候是非常有用,只要能让读者能弄明白代码的作用这就是合理的,因此用注释解释原因是非常有用的。
但是下面这个注释却是无用的,多此一举的。
v = 5
# 赋值5 给变量 v
而下面这个注释却包含着代码中没有的有用的信息
v = 5
# 5米/秒的速度
因此,好的变量名可以减少注释的内容,但是太长的变量名又会显得过犹不及,这个地方需要你自行权衡处理。
2.10 调试
此时你最容易犯的语法错误是使用了非法的变量名,就像 class 或 yield,这些关键字是不能作为变量名的,又或者像odd~job和US$,这些变量名包含非法字符。
你如果在一个变量名中间加一个空格,Python就会认为这是两个没有操作符的操作数:
>>> bad name = 5
SyntaxError: invalid syntax
对于语法错误,错误信息通常没有太大的帮助,最常见的语法错误就是 SyntaxError: invalid syntax 和 SyntaxError: invalid token。
运行时错误最常见的就是“先用后定义”,也就是在给某变量赋值之前就使用该变量,例如你把一个变量名拼写错了就会发生这个错误:
>>> principal = 327.68
>>> interest = principle * rate
NameError: name 'principle' is not defined
另外变量名是区分大小写的,例如LaTeX和latex就是不一样的。此时,最容易导致语法错误的情况就是使用变量的顺序。例如:计算1/2 π,你可能会输入如下代码:
>>> 1.0 / 2.0 * pi
但是,按优先等级,除法是先进行计算,因此你将会得到的结果是π/2,而不是1/2π。此时Python并不知道你到底想要什么结果,因此在这个例子中你得不到任何报错信息,因而你得到了一个错误的结果。
2.11 术语表
值:
数据基本单位,如数字或字符串,程序操作等
类型:
值的分类。到目前为止有整数,浮点数和字符型。
整数:
表示整数的类型
浮点型:
用小数表示的数字类型
字符型:
表示字符序列的类型
变量:
值引用的名称
语句:
表示命令或操作的代码。目前为止,语句包含赋值和打印语句。
赋值:
为变量赋值的语句
状态图:
用来表示变量及其值引用的图形
关键字:
编译器用来解析程序的保留字。例如if,def和while等关键字是不能用来作为变量名的。
运算符:
用来表示简单计算,如加减乘除或字符串级联的特殊字符
操作数:
运算符所操作的值
向下取整:
两数相除忽略小数部分
表达式:
由变量、运算符、值等表示求得数值的组合
求值:
通过操作来简化表达式并获得一个值
优先法则:
用于计算涉及多个运算符和操作数的表达式的顺序的规则集
连接:
把两个操作数首尾相连
注释:
程序中的为了让其他程序员(或任何阅读源代码的人)提供的对程序的执行没有任何影响信息。
2.12 练习