<< >>

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` 语句是代码块，需要象函数一样缩排。

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

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

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

第三，你从未声明过变量 `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。

进一步阅读 |

- Python Reference Manual 展示了什么时候可以忽略续行符和什么时候你需要使用它的例子。

« 序列 101 | 格式化字符串 »