天天看点

《Python游戏编程快速上手》一2.3 在变量中存储值

本节书摘来异步社区《python游戏编程快速上手》一书中的第2章,第2.3节,作者: 【美】al sweigart(斯维加特) 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

也可以把表达式的计算结果的值存储到变量中,以便后面可以使用它。可以把变量当做是一个可以保存值的盒子。

一条赋值语句指令会把一个值保存到一个变量中。输入变量的名称,后边跟着等号(=称为赋值操作符),然后是要存储到这个变量中的值。例如,在交互式shell中输入spam = 15:

这将把值15存储到spam变量的盒子中,如图2-4所示。名字“spam”是盒子的标签(python由此可以识别变量),而值写在盒子中的一张便签上。

《Python游戏编程快速上手》一2.3 在变量中存储值

当按下回车键时,你不会看到任何响应。在python中,如果没有出现错误,就表示成功地执行了指令。然后将会出现>>>提示符,你可以输入下一条指令了。

和表达式不同,语句是不会计算为任何值的指令。正因为如此,在spam = 15之后,交互式shell的下一行中没有显示任何的值。如果你不清楚哪些指令是表达式,哪些指令是语句,那么请记住:表达式会得到一个值,而任何其他类型的指令都是一条语句。

变量保存的是值而不是表达式。例如,考虑一下语句spam = 10 + 5和spam = 10 + 7 - 2中的表达式。它们的运算结果都是15。最终结果是相同的:两条赋值语句都把值15保存到了变量spam中。

第一次在赋值语句中使用一个变量的时候,python将会创建该变量。要查看变量中的值,在交互式shell中输入该变量的名称:

表达式spam得到了变量spam中的值,即15。可以在表达式中使用变量。尝试在交互式shell中输入如下指令:

我们已经把变量spam的值设置为15,所以输入spam + 5就像是输入表达式15 + 5一样。下面是spam + 5的运算步骤:

在赋值语句创建变量之前,不能使用该变量。否则,python将会给出一个nameerror的错误,因为尚不存在该名称的变量。输错了变量名称也会得到这样一个错误:

出现这个错误,是因为虽然有spam变量,但是并没有名为spma的变量。

可以通过输入另一条赋值语句来修改变量中存储的值。例如,尝试在交互式shell中输入如下语句:

当第一次输入spam + 5时,表达式的计算结果是20,因为我们把15存储在spam中。然而,当输入spam = 3时,用值3替代(或覆盖)了值15。现在,当我们输入spam + 5时,表达式的计算结果是8,因为现在spam的值是3。覆盖的过程如图2-5所示。

《Python游戏编程快速上手》一2.3 在变量中存储值

甚至可以使用spam变量中的这个值,来给spam赋一个新的值:

赋值语句spam = spam + 5的意思是:“spam变量中的新值是,spam当前的值加上5”。通过在交互式shell中输入如下的语句,让spam中的值持续几次增加5:

使用多个变量

在程序中,可以根据需要创建任意多个变量。例如,让我们给名为eggs和bacon的两个变量分配不同的值,如下所示:

现在,变量bacon中是10,变量eggs中是15。每个变量都有自己的盒子,其中拥有其自己的值,如图2-6所示。

《Python游戏编程快速上手》一2.3 在变量中存储值

尝试在交互式shell中输入spam = bacon + eggs,然后查看spam中的新值:

现在,spam中的值是25。当把bacon和eggs相加时,就是把其值10和15相加。变量包含的是值而不是表达式。把值25赋给变量spam,而不是把表达式bacon + eggs赋给变量。在spam = bacon + eggs赋值语句之后,对于bacon或者eggs的修改不会再影响到spam。