python全局变量
添加时间:2013-6-13 点击量:
转自:http://blog.donews.com/maverick/archive/2007/07/02/1181907.aspx
全局变量不合适参数传递的精力,所以,日常平凡我很少应用,除非定义常量。今天有同事问一个关于全局变量的题目,才发明此中本来还有门道。
法度大致是如许的:
CTANT = 0
def modifyConstant() :
print CTANT
CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
运行成果如下:
UnboundLocalError: local variable ‘CTANT’ referenced before assignment
看来,全局变量在函数modifyConstant中边成结局部变量,似乎全局变量没有生效?
做点批改:
CTANT = 0
def modifyConstant() :
print CTANT
#CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
运行正常,看来函数内部是可以接见全局变量的。
所以,题目就在于,因为在函数内部批改了变量CTANT,Python认为CTANT是局部变量,而print CTANT又在CTANT += 1之前,所以当然会产生这种错误。
那么,应当如安在函数内部接见并批改全局变量呢?应当应用关键字global来润饰变量(有点像PHP):
CTANT = 0
def modifyConstant() :
global CTANT
print CTANT
CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
就这么简单!
原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
转自:http://blog.donews.com/maverick/archive/2007/07/02/1181907.aspx
全局变量不合适参数传递的精力,所以,日常平凡我很少应用,除非定义常量。今天有同事问一个关于全局变量的题目,才发明此中本来还有门道。
法度大致是如许的:
CTANT = 0
def modifyConstant() :
print CTANT
CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
运行成果如下:
UnboundLocalError: local variable ‘CTANT’ referenced before assignment
看来,全局变量在函数modifyConstant中边成结局部变量,似乎全局变量没有生效?
做点批改:
CTANT = 0
def modifyConstant() :
print CTANT
#CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
运行正常,看来函数内部是可以接见全局变量的。
所以,题目就在于,因为在函数内部批改了变量CTANT,Python认为CTANT是局部变量,而print CTANT又在CTANT += 1之前,所以当然会产生这种错误。
那么,应当如安在函数内部接见并批改全局变量呢?应当应用关键字global来润饰变量(有点像PHP):
CTANT = 0
def modifyConstant() :
global CTANT
print CTANT
CTANT += 1
return
if __name__ == ‘__main__’ :
modifyConstant()
print CTANT
就这么简单!
原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#