diveintopython.org
Python for experienced programmers

1.10. 定义变量

即然你认为已经了解了字典,序列和列表的所有知识,就让我们回到我们的例子程序 odbchelper.py

Python象大多数其它语言一样有局部和全局变量,但是它没有明显的变量声明。变量通过赋值产生,当超出作用范围时自动消灭。

例 1.23. 定义 myParams 变量

if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master", \
                "uid":"sa", \
                "pwd":"secret" \
                }

这里有几个有趣的地方。首先,注意一下缩排。if 语句是代码块,需要象函数一样缩排。

其次,变量的赋值是一条命令被分成了几行,用反斜线(“\”)作为续行符。

Note
当一条命令用续行符(“\”)分割成多行时,后续的行可以以任何方式缩排,Python通常的严格的缩排规则不需遵守。如果你的Python IDE自由对后续行进行了缩排,你应该把它当成是缺省处理,除非你有特别的原因不这么做。
Note

严格地讲,在小括号,方括号或大括号中的表达式(如定义字典)可以用或者不用续行符(“\”)分割成多行。甚至在不必需的时候,我也喜欢包括反斜线,因为我认为这样会让代码读起来容易,但那只是风格的问题。

第三,你从未声明过变量 myParams,你只是给它赋了一个值。这点就象是VBScript没有设置 option explicit 选项。幸运的是,不象VBScript,Python不允许你引用一个未被赋值的变量,试图这样做会引发一个异常。

例 1.24. 引用未赋值的变量

>>> x
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'
>>> x = 1
>>> x
1

早晚有一天你会为此而感谢Python。


进一步阅读