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 >>>
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 >>>
原理理解:
理解并非完全正确,只是为最终完全熟识原理做一个阶段性的标记。
1)python中一切皆需指针
2)调用函数,当执行到全局变量时,系统控制不能将新申请的内存地址赋值给全局变量的指针,也就是不能使全局变量的指针改变指向。这里应该测试之初的设计,而非不 能实现。
3) 用global 全局变量名,赋予全局变量的指针改变指向的权限,所以可修改全局变量。
浙公网安备 33010602011771号