全局变量和局部变量
全局变量,顾名思义,就是为整个程序块服务的。
局部变量,顾名思义,就是为整个程序中的某一个程序块儿服务的。
示例:
>>> a = 10
>>> def add(a,b):
... a = 5
... c = a + b
... print "This a: " + str(a)+ " is a inner varible"
... print "---------------------------"
...
>>> add(a,3)
This a: 5 is a inner varible
---------------------------
>>> print a
10
>>> print "This a: " + str(a) + " is a outer varible"
This a: 10 is a outer varible
>>>
发现,在定义函数add之外的a为外部变量,在定义的函数add内的a是内部变量,函数内部定义的a的作用范围只是在定义的函数体结束就失去意义了,而外部的a依然没有受到影响。
但是这两个变量虽然位置不同,但是两个变量都相互不影响,它们在各自的作用域内实现自己的价值。
思考,该如何定义一个全局变量呢?
在Python中,定义一个全局变量需要使用一个关键字global也就是全局的意思。
来看看文档中对于global的解释:
The global
statement
global_stmt ::= “global” identifier (“,” identifier)*
The global
statement is a declaration which holds for the entire
current code block. It means that the listed identifiers are to be
interpreted as globals. It would be impossible to assign to a global
variable without global
, although free variables may refer to
:
解释:“全局”语句是一个适用于整个语句的声明
当前代码块。 这意味着列出的标识符是
为全局变量,它不可能给没有global的表示符分配一个全局变量,尽管*变量可以引用。
1、将全局变量放在函数外
>>> global a
>>> a = 10
>>> def add(a,b):
... a = 5
... c = a + b
... print "This a: " + str(a) + " is a inner varible"
... print "----------------------------------------"
...
>>> add(a,0)
This a: 5 is a inner varible
----------------------------------------
>>> print "This a: " + str(a) + " is a outer varible"
This a: 10 is a outer varibl
>>>
2、将全局变量放在函数内
>>> x = 4
>>> def sub(y):
... global x
... x = 7
... z = x * y
... print "This x is : " + str(x) + " is a inner varible !"
... print "------------------------------------------"
...
>>> sub(5)
This x is : 7 is a inner varible !
------------------------------------------
>>> print "This x is : " + str(x) + " is a outer varible !"
This x is : 7 is a outer varible !
>>>
经过测试,发现无论变量在函数体内还是在定义的函数外,只要被披上global的衣服,它就是作用与整个代码块儿。
最后,注意,这个全局变量要谨慎使用,用法不当会很容以造成代码阅读混乱!
完成于2017年05 月 18 号
晚上 20:49