Python学习之函数(全局变量和局部变量)

来源:互联网 发布:阿里云网站监控 编辑:程序博客网 时间:2024/06/05 20:08

全局变量和局部变量
全局变量,顾名思义,就是为整个程序块服务的。
局部变量,顾名思义,就是为整个程序中的某一个程序块儿服务的。
示例:

>>> 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 a10>>> 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