“变量”就像计算机内存中的一个盒子,其中可以存放一个值。如果你的程序稍后将用到一个已求值的表达式的结果,就可以将它保存在一个变量中。
1.4.1 赋值语句
用“赋值语句”将值保存在变量中。赋值语句包含一个变量名、一个等号(称
为赋值操作符),以及要存储的值。如果输入赋值语句 spam = 42,那么名为 spam
的变量将保存一个整型值 42。
可以将变量看成一个带标签的盒子,值放在其中,如图 1-2 所示。
图 1-2 spam = 42 就像是告诉程序“变量 spam 现在有整数 42 放在里面”
例如,在交互式环境中输入以下内容:
➊ >>> spam = 40
>>> spam
40
>>> eggs = 2
➋ >>> spam + eggs
42
>>> spam + eggs + spam
82
➌ >>> spam = spam + 2
>>> spam
42
第一次存入一个值,变量就被“初始化”(或创建)➊。此后,可以在表达式中使用它,以及其他变量和值➋。如果变量被赋了一个新值,老值就被忘记了
ngs>。这就是为什么在例子结束时,spam 求值为 42,而不是 40。这称为“覆写”该变量。在交互式环境中输入以下代码,尝试覆写一个字符串:
>>> spam = 'Hello'
>>> spam
'Hello'
>>> spam = 'Goodbye'
>>> spam
'Goodbye'
就像图 1-3 中的盒子,这个例子中的 spam 变量保存了'Hello',直到你用'Goodbye'替代它。
图 1-3 如果一个新值赋给变量,老值就被遗忘了
1.4.2 变量名
表 1-3 中有一些合法变量名的例子。你可以给变量取任何名字,只要它遵守以
下 3 条规则:
1.只能是一个词。
2.只能包含字母、数字和下划线。
3.不能以数字开头。
表 1-3 有效和无效的变量名
有效的变量名 无效的变量名
balance current-balance(不允许中划线)
currentBalance current balanc(不允许空格)
current_balance 4account(不允许数字开头)
_spam 42(不允许数字开头)
SPAM total_$um(不允许$这样的特殊字符)
account4 'hello'(不允许'这样的特殊字符)
变量名是区分大小写的。这意味着,spam、 SPAM、Spam 和 sPaM 是 4 个不同的变量。变量用小写字母开头是Python 的惯例。
本书的变量名使用了驼峰形式, 没有用下划线。也就是说, 变量名用 lookLikeThis,而不是 looking_like_this。一些有经验的程序员可能会指出,官方的 Python
代码风格PEP 8,即应该使用下划线。我喜欢驼峰式,这没有错,并认为 PEP 8 本身“愚蠢的一致性是头脑狭隘人士的心魔”:
“一致地满足风格指南是重要的。但最重要的是,知道何时要不一致,因为有时候风格指南就是不适用。如果有怀疑,请相信自己的最佳判断。”
好的变量名描述了它包含的数据。设想你搬到一间新屋子,搬家纸箱上标的都是“东西”。你永远找不到任何东西!本书的例子和许多 Python 的文档,使用 spam、 eggs 和bacon
等变量名作为一般名称(受到 Monty Python 的“Spam”短剧的影响),但在你的程序中,具有描述性的名字有助于提高代码可读性。