2.1.1 常量与变量
在程序中如何指明要处理的数据?所有编程语言都提供两种指明数据的方式:第一,直接用字面值(literal)表示数据,即从文本字面上即可看出是什么数据,这种数据是不会改 变的常量;第二,将数据存储在一个变量中,以后用该变量来指代数据。
回顾第 1 章中我们所写的第一个程序:
>>> print "Hello World!"
其中"Hello World!"就是以字面值的形式指明 print 命令要操作的数据。我们也可以这 样做:
>>> s = "Hello World!"
>>> print s
Hello World!
这里先将数据"Hello World!"存储在变量 s 当中,然后通过引用 s 来指明 print 要操 作的数据。
又如,3.1416 也是字面值,看到这串文本就知道它表示一个数值。我们可以直接处理 这个字面值,也可以将它存储在变量中并通过引用变量来指代此数值。
>>> print 3.1416
3.1416
>>> p = 3.1416
>>> print p
3.1416
字面值的意义是不可改变的,而变量的意义(即变量存储的值)是可以改变的。例如, 我们接着上面的语句继续操作数据 p:
>>> p = 2.71828
>>> print p
2.71828
这里我们将变量 p 的值改成了 2.71828,因此 p 所表示的数据被改变了。 在程序中直接使用字面值通常不是好的做法,因为这会导致程序缺乏一般性,即只适用
于特定计算。如果要将程序应用于其他数据的计算,则必须修改程序中的字面值,这是很不 方便的。显然,使用变量可以使程序具有一般性,因为只要为变量赋予不同的值,程序就可 以对不同数据进行处理。
变量只是一个“占位符”,必须用具体数据赋值后才有意义。正如我们已经多次见到的, 赋值语句的语法形式是:
<变量> = <表达式>
其中等号表示赋值,等号左边是一个变量,右边是一个表达式(由常量、变量和运算符构成)。 Python 首先对表达式进行求值,然后将结果存储到变量中。如果表达式无法求值,则赋值 语句出错。一个变量如果未赋值,则称该变量是“未定义的”。在程序中使用未定义的变量 会导致错误。例如:
>>> print q
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
print q
NameError: name 'q' is not defined
并行赋值
与许多编程语言不同,Python 语言允许同时对多个变量赋值,例如:
>>> x,y = 1,2
>>> x
1
>>> y
2
这种形式的赋值语句使得交换两个变量的值的任务变得轻而易举:
>>> x,y = y,x
>>> x
2
>>> y
1
而在其他编程语言中为了交换两个变量 x 和 y 的值,必须借助于一个临时变量,执行三 条赋值语句:
temp = x x = y
y = temp