Python 中的命名空间和作用域
变量是映射到对象的名字(标识符)。一个 命名空间 是一个变量名(键)和其对应的对象(值)的字典。
一个 Python 语句可以访问 本地命名空间 中的变量和 全局命名空间 中的变量。如果一个本地变量和一个全局变量具有相同的名字,则本地变量将覆盖全局变量。
每个函数都有其自己的本地命名空间。类方法遵循与普通函数相同的范围规则。
Python 根据变量是本地变量还是全局变量进行准确猜测。它假设在函数中分配值的任何变量都是本地变量。
因此,要为函数中的全局变量分配值,你必须首先使用 global 语句。
语句 global VarName 告诉 Python,VarName 是一个全局变量。Python 会停止在本地命名空间中搜索该变量。
例如,我们在全局命名空间中定义了一个变量 Money 。在函数 Money 中,我们给 Money 赋了一个值,因此 Python 将 Money 视为一个本地变量。然而,我们在设置本地变量 Money 的值之前访问了该值,所以结果是未绑定本地变量错误。取消注释 global 语句可以解决这个问题。
#!/usr/bin/python Money = 2000 def AddMoney(): # Uncomment the following line to fix the code: # global Money Money = Money + 1 print Money AddMoney() print Money
广告