导航: 起始页 > Dive Into Python > 内置数据类型 > 变量声明 | << >> | ||||
Python 研究(Dive Into Python)Python 从新手到高手 [DIP_5_4_CPUG_RELEASE] |
现在您已经了解了有关 dictionary, tuple, 和 list 的相关知识 (哦, 我的老天!), 让我们回到 第 2 章 的例子程序 odbchelper.py。
Python 与大多数其它语言一样有局部变量和全局变量之分, 但是它没有明显的变量声明。变量通过首次赋值产生, 当超出作用范围时自动消亡。
例 3.17. 定义 myParams 变量
if __name__ == "__main__": myParams = {"server":"mpilgrim", \ "database":"master", \ "uid":"sa", \ "pwd":"secret" \ }
首先注意缩进。 if 语句是代码块, 需要像函数一样缩进。
其次, 变量的赋值是一条被分成了多行的命令, 用反斜线 (“\”) 作为续行符。
当一条命令用续行符 (“\”) 分割成多行时, 后续的行可以以任何方式缩近, 此时 Python 通常的严格的缩近规则无需遵守。如果您的 Python IDE 自由对后续行进行了缩近, 您应该把它当成是缺省处理, 除非您有特别的原因不这么做。 |
严格地讲, 在小括号, 方括号或大括号中的表达式 (如 定义一个 dictionary) 可以用或者不用续行符 (“\”) 分割成多行。甚至在不是必需的时候, 我也喜欢使用续行符, 因为我认为这样会让代码读起来更容易, 但那只是风格的问题。
第三, 您从未声明过变量 myParams, 您只是给它赋了一个值。这点就象是 VBScript 没有设置 option explicit 选项一样。幸运的是, 与 VBScript 不同的是, Python 不允许您引用一个未被赋值的变量, 试图这样做会引发一个异常。
例 3.18. 引用未赋值的变量
>>> x Traceback (innermost last): File "<interactive input>", line 1, in ? NameError: There is no variable named 'x' >>> x = 1 >>> x 1
迟早有一天您会为此而感谢 Python 。
Python 中比较 “酷” 的一种编程简写是使用序列来一次给多个变量赋值。
这种用法有许多种用途。我经常想要将一定范围的值赋给多个变量。在 C 语言中, 可以使用 enum 类型, 手工列出每个常量和其所对应的值, 当值是连续的时候这一过程让人感到特别繁琐。而在 Python 中, 您可以使用内置的 range 函数和多变量赋值的方法来快速进行赋值。
例 3.20. 连续值赋值
>>> range(7) [0, 1, 2, 3, 4, 5, 6] >>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7) >>> MONDAY 0 >>> TUESDAY 1 >>> SUNDAY 6
您也可以使用多变量赋值来创建返回多个值的函数, 只要返回一个包含所有值的 tuple 即可。调用者可以将其视为一个 tuple, 或将值赋给独立的变量。许多标准的 Python 库都是这样做的, 包括 os 模块, 将在 第 6 章 中讨论。
进一步阅读
- Python Reference Manual 展示了什么时候可以忽略续行符 和 什么时候您需要使用续行符的例子。
- How to Think Like a Computer Scientist 演示了如何使用多变量赋值来 交换两个变量的值。
<< Tuple 介绍 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
格式化字符串 >> |