py知识点结构(五)(5.1标准类型)之全局变量

在程序中同时出现全局变量和局部变量时注意以下三项:

1)为了与局部变量做区分,全局变量名应尽量大写。

2)若在函数中直接修改全局变量,相当于在函数中创建了一个与全局变量同名的局部变量,对全局变量的修改不生效。见例1,全局变量S在foo2函数中仍然为原值。

    

#-*- coding:utf-8 -*-

'''验证修改全局变量'''
S = 'sum = '
def foo1():
    a = 3
    b = 5
    S = 'remove = '
    print S,a+b
def foo2():
    c = 1
    d = 2
    print S,c+d

foo1()
foo2()

>>> 
remove =  8
sum =  3
>>> 
View Code

 

3)在函数中修改全局变量,必须试用global 全局变量名。见例2,foo1函数中正确引用并修改全局变量后,foo2函数成功引用了修改生效的全局变量。

#-*- coding:utf-8 -*-

'''验证修改全局变量'''
S = 'sum = '
def foo1():
    a = 3
    b = 5
    global S
    S = 'remove = '
    print S,a+b
def foo2():
    c = 1
    d = 2
    print S,c+d

foo1()
foo2()

>>> 
remove =  8
remove =  3
>>> 
View Code

 原理理解:

 理解并非完全正确,只是为最终完全熟识原理做一个阶段性的标记。

 1)python中一切皆需指针

 2)调用函数,当执行到全局变量时,系统控制不能将新申请的内存地址赋值给全局变量的指针,也就是不能使全局变量的指针改变指向。这里应该测试之初的设计,而非不       能实现。

 3) 用global 全局变量名,赋予全局变量的指针改变指向的权限,所以可修改全局变量。

posted on 2016-05-14 10:59  lexn  阅读(119)  评论(0)    收藏  举报

导航