Python的全局变量
应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。
全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。
但是某些时候,全局变量能够解决局部变量所难以解决的问题。事物要一分为二。
python里面全局变量有两种灵活的用法:
1 声明法
在文件开头声明全局变量variable,
在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。
CONSTANT = 0 (将全局变量大写便于识别)
def modifyConstant() : 
        global CONSTANT 
        print CONSTANT 
        CONSTANT += 1 
        return
if __name__ == '__main__' : 
        modifyConstant() 
        print CONSTANT
2 模块法
将需要定义的全局变量保存在一个模块中,这样,每次引用的时候,就从这个模块中取出来。这样的好处是突破了函数的限制,同时,保存和全局变量的原始值
例如,我们将全局变量定义在A.py中:
| 1 2 3 4 5 | A.pya = 10;b = 3243;c = "hello,world" | 
在B中引用该变量
| 1 2 3 4 5 6 7 8 9 10 11 12 | B.pyimport Aprint(A.a,A.b,A.c);A.a = 200A.c = "change value"print(A.a,A.b,A.c); | 
输出结果为:
(10, 3243, 'hello,world')
(200, 3243, 'change value')
函数内改变了全局变量的数值
| 1 2 3 4 5 | c。pyimport Aprint (A.a,A.b,A.c) | 
输出结果:
(10, 3243, 'hello,world')
并没有因为在B中改变了全局变量的值而导致A模块中的数值发生变化!
参考:http://blog.csdn.net/wolf199103/article/details/8123364
Python的全局变量的更多相关文章
- PYTHON之全局变量
		应该尽量避免使用全局变量.不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性.对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误.这种错误是很难 ... 
- python中全局变量和局部变量的一个小坑
		python 中全局变量和局部变量在使用过程中的一个容易出错的地方 什么是全局变量 python中,在函数外部声明的变量可以叫做全局变量. x = 10 def fn1(): pass fn1() 什 ... 
- Python 的全局变量
		结论: Python 的全局变量只在本文件中生效. 定义全局变量的文件 G.py # define some global variable A = 1 B = 2 C = 3 def fuck(a= ... 
- Python 中全局变量的实现
		一.概述 Python 中全局变量的使用场景不多,但偶尔也有用武之处. 如在函数中的初始化,有时需要从外部传入一个全局变量加以控制.或者在函数中,使用连接池时,也可能有使用全局变量的需要. 广义上的全 ... 
- Python实现全局变量的两个解决方法
		Python实现全局变量的两个解决方法 本文针对Python的全局变量实现方法简述如下: 先来看下面一段测试程序: count = 0 def Fuc(count): print coun ... 
- python 默认全局变量
		python 内置默认全局变量print (vars()) __doc__ #py文件头部的注释 '''我是一个注释例子''' print (vars()) __file__ #当前文件路劲__pac ... 
- python之全局变量与局部变量
		全局变量: - 在书写中顶格开始: - 一旦定义完毕在整个文件生效: - 在函数内如果定义了同名全局变量名,会“覆盖”掉全局变量: - 在函数中同名的变量,当在函数退出后消失,全局的同 ... 
- 讨论下python中全局变量的使用
		首先看一段代码: A = 0 B = [0] def fun1(A, B): A += 1 B[0] += 1 fun1(A, B) print 'after fun1 %d %s' % (A,B) ... 
- python中全局变量的使用
		python中在module定义的变量可以认为是全局变量, 而对于全局变量的赋值有个地方需要注意. test.py ------------------------------------------ ... 
随机推荐
- express-13 中间件
			简介 从概念上讲,中间件是一种功能的封装方式,具体来说就是封装在程序中处理HTTP请求的功能. 中间件是在管道中执行的,在Express程序中,通过调用app.use向管道中插入中间件.(在Expre ... 
- Swift3.0语言教程获得一个公共的前缀
			Swift3.0语言教程获得一个公共的前缀 Swift3.0语言教程获得一个公共的前缀,当在一个程序中有多个字符串时,我们需要判断是否有两个字符串有公共的前缀时,是很困难的.在NSString中的co ... 
- 如何清除windows 用户名及密码
- ajax 异步交互
			<script> $(function(){ $("#sub").click(function () { $.ajax( ... 
- 由case 和 break 引发的思考
			我在使用case 语句的时候,发现结果不对劲,原来我是忽略了break这个语句的添加 然后,我要反思的是,这样基本的语句,我这样的错误也能犯,证明我自己之前还没有真正掌握这个语句的使用. 所以,真正地 ... 
- [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化
			11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ... 
- Codeforces Beta Round #4 (Div. 2 Only)
			A题,水题,准1Y,第一次CE了..CF里,CE没有罚时.. B题,直接模拟.. #include <cstdio> #include <string> #include &l ... 
- 爬虫_Crawler4j的使用
			Crawler4j的使用 (以下内容全部为转载,供自己查阅用) 下载地址: http://code.google.com/p/crawler4j/ Crawler4j的使用 网上对于crawler4j ... 
- 使用audio标签播放音频文件
			HTML5定义了一个新的元素用来指定标准的方式来插入音频文件到web页面中:<audio>标签.使用audio标签可以控制音频的播放与停止,循环播放与播放次数设置,以及播放位置等等. 例如 ... 
- Javascript 异步编程的4种方法
			你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ... 
