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


    就这么简单!

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: