Python命名空间和作用域
上一篇 /
下一篇 2015-09-26 20:43:11
/ 个人分类:Python学习
一个Python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。
Python会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。
global VarName的表达式会告诉Python, VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了。
Money=2000defAddMoney():# 想改正代码就取消以下注释:# global MoneyMoney=Money+1printMoneyAddMoney()printMoney
如果没有了注释掉的那句代码,调用AddMoney就会报错
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
AddMoney()
File "<pyshell#70>", line 2, in AddMoney
Money=Money+1
UnboundLocalError: local variable 'Money' referenced before assignment
总结:如果要给全局变量在一个函数里赋值,必须使用global语句。
收藏
举报
TAG:
空间
命名