您的位置:首页 > 编程语言 > Python开发

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

2017-05-18 20:48 603 查看
全局变量和局部变量

全局变量,顾名思义,就是为整个程序块服务的。

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

示例:

>>> 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息