python中的全局变量用法分析
本文实例分析了python中的全局变量用法。分享给大家供大家参考。具体分析如下:
Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题。
首先应该说明的是需要尽量避免使用Python全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,这时可能导致程序中的错误。这种错误是很难发现和更正的。
全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。 但是某些时候,Python全局变量能够解决局部变量所难以解决的问题。事物要一分为二。 python里面全局变量有两种灵活的用法:
gl.py:
gl_1 = 'hello' gl_2 = 'world'
在其它模块中使用
a.py:
import gl def hello_world() print gl.gl_1, gl.gl_2
b.py:
import gl def fun1() gl.gl_1 = 'Hello' gl.gl_2 = 'World' def modifyConstant() : global CONSTANT print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
1 声明法
在文件开头声明Python全局变量variable, 在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。 CONSTANT = 0 (将全局变量大写便于识别)
2模块法(推荐)
推荐!
gl.py:
gl_1 = 'hello' gl_2 = 'world'
在其它模块中使用
a.py:
import gl def hello_world() print gl.gl_1, gl.gl_2
b.py:
import gl def fun1() gl.gl_1 = 'Hello' gl.gl_2 = 'World' def modifyConstant() : global CONSTANT print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
希望本文所述对大家的Python程序设计有所帮助。
相关推荐
-
从局部变量和全局变量开始全面解析Python中变量的作用域
理解全局变量和局部变量 1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量.在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量.例如: num = 100 def func(): num = 123 print num func() 输出结果是123.说明函数中定义的变量名num是一个局部变量,覆盖全局变量.再例如: num = 100 def func(): num += 100 print num func() 输出结果是:Unb
-
Python全局变量用法实例分析
本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量的问题,才发现其中原来还有门道. 程序大致是这样的: CONSTANT = 0 def modifyConstant() : print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT 运行结果如下:
-
python通过函数属性实现全局变量的方法
本文实例讲述了python通过函数属性实现全局变量的方法.分享给大家供大家参考.具体分析如下: python的函数可以定义属性,而且是全局的,这个非常好用,例如用于数字累加,你不用专门去定义一个全局变量,使用函数的属性即可. def add(x=1): try: add.sum += x except AttributeError: add.sum = x return add.sum print add(3) print add(4) print add(10) class Ax(object
-
Python全局变量操作详解
接触Python时间不长,对有些知识点,掌握的不是很扎实,我个人比较崇尚不管学习什么东西,首先一定回去把基础打的非常扎实了,再往高处走.今天遇到了Python中的全局变量的相关操作,遇到了问题,所以,在这里将自己遇到的问题,做个记录,以长记心!!! 在Python中使用全局变量,其实,个人认为并不是很明智的选择:但是自己还是坚信,存在便合理,在于你怎么使用:全局变量降低了模块和函数之间的通用性:所以,在以后的编程过程中,应尽量避免使用全局变量. 全局变量的使用: 方法一: 为了便于代码管理,将全
-
python实现跨文件全局变量的方法
在使用Python编写的应用的过程中,有时候会遇到多个文件之间传递同一个全局变量的情况.本文就此给出了如下的解决方法供大家参考. 文件1:globalvar.py #!/usr/bin/env python2.7 class GlobalVar: db_handle = None mq_client = None def set_db_handle(db): GlobalVar.db_handle = db def get_db_handle(): return GlobalVar.db_han
-
实例讲解Python中global语句下全局变量的值的修改
Python的全局变量:int string, list, dic(map) 如果存在global就能够修改它的值.而不管这个global是否是存在于if中,也不管这个if是否能够执行到. 但是,如果没有 if bGlobal: global g_strVal; int string 将会报错.而list dic(map)是ok的. #!/usr/bin/dev python import sys import os g_nVal = 0; g_strVal = "aaaa"; g_m
-
Python教程之全局变量用法
本文实例讲述了Python全局变量用法.分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量.今天有同事问一个关于全局变量的问题,才发现其中原来还有门道. 程序大致是这样的: CONSTANT = 0 def modifyConstant() : print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT 运行结果如下:
-
Python实现全局变量的两个解决方法
本文针对Python的全局变量实现方法简述如下: 先来看下面一段测试程序: count = 0 def Fuc(count): print count count += 1 for i in range(0, 10): Fuc(count) 运行结果是: >>> 0 0 0 0 0 0 0 0 0 0 很显然,这并不是我们想要的结果. 针对这一问题的解决方法就是采用全局变量: global a a = 3 def Fuc(): global a print a a = a + 1 if
-
打印出python 当前全局变量和入口参数的所有属性
def cndebug(obj=False): """ Author : Nemon Update : 2009.7.1 TO use : cndebug(obj) or cndebug() or MyObject.debug=cndebug License: GPL """ print('='*80) print('='*30 + ' GLOBAL VARIABLES ' +'='*30) print('='*80) g=globals() f
-
python中的全局变量用法分析
本文实例分析了python中的全局变量用法.分享给大家供大家参考.具体分析如下: Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题. 首先应该说明的是需要尽量避免使用Python全局变量.不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性.对全局变量,如果程序员甲修改了_a的值,这时可能导致程序中的错误.这种错误是很难发现和更正的. 全局变量降低了函数或模块之间的通
-
python中split方法用法分析
本文实例讲述了python中split方法用法.分享给大家供大家参考.具体分析如下: split 是非常重要的字符串方法,它是join的逆方法,用来将字符串分割成序列 >>> '1+2+3+4+5'.split('+') ['1', '2', '3', '4', '5'] >>> 'usr/bin/env'.split('/') ['usr', 'bin', 'env'] >>> 'usr/bin/env'.split('/') ['usr', 'bi
-
python中dir函数用法分析
本文实例讲述了python中dir函数用法.分享给大家供大家参考.具体分析如下: dir 函数返回任意对象的属性和方法列表, 包括模块对象.函数对象.字符串对象.列表对象.字典对象 ...... 相当多的东西. dir函数示例: >>> li = [] >>> dir(li) ['append','count','extend','index','insert', 'pop','remove','reverse','sort'] >>> d = {}
-
Python中os.path用法分析
本文实例分析了Python中os.path用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: #coding=utf-8 import os print os.path.abspath("d:\\new\\test.txt") print os.path.basename("d:\\new\\test.txt") print os.path.dirname("d:\\new\\test.txt") print os.path.exist
-
python中Genarator函数用法分析
本文实例讲述了python中Genarator函数用法.分享给大家供大家参考.具体如下: Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可.Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的数据项. def func(n): for i in range(n): yield i for i in func(3): print i r=func(3) print r.next() print r.next
-
Python中操作符重载用法分析
本文实例讲述了Python中操作符重载用法.分享给大家供大家参考,具体如下: 类可以重载python的操作符 操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载. python在计算操作符时会自动调用这样的方法,例如: 如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法.通过重载,用户定义的对象就像内置的一样. 在类中重载操作符 1.操作符重载使得类能拦截标准的python操作. 2.类可
-
Python中super关键字用法实例分析
本文实例讲述了Python中super关键字用法.分享给大家供大家参考.具体分析如下: 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(self): print "enter A" print "leave A" class B(A): def __init__(self): print "enter B" A.__init
-
python中pass语句用法实例分析
本文实例讲述了python中pass语句用法.分享给大家供大家参考.具体分析如下: 1.空语句 do nothing 2.保证格式完整 3.保证语义完整 4.以if语句为例: C/C++中写法: if(true) ; // do nothing else {} // do nothing python中写法: if true: pass # do nothing else: print "do something." 测试程序:定义一个空函数 >>> def null
-
python中enumerate函数用法实例分析
本文实例讲述了python中enumerate函数用法.分享给大家供大家参考.具体分析如下: 今日发现一个新函数 enumerate .一般情况下对一个列表或数组既要遍历索引又要遍历元素时,会这样写: for i in range (0,len(list)): print i ,list[i] 但是这种方法有些累赘,使用内置enumerrate函数会有更加直接,优美的做法,先看看enumerate的定义: def enumerate(collection): 'Generates an inde
-
python中threading超线程用法实例分析
本文实例讲述了python中threading超线程用法.分享给大家供大家参考.具体分析如下: threading基于Java的线程模型设计.锁(Lock)和条件变量(Condition)在Java中是对象的基本行为(每一个对象都自带了锁和条件变量),而在Python中则是独立的对象.Python Thread提供了Java Thread的行为的子集:没有优先级.线程组,线程也不能被停止.暂停.恢复.中断.Java Thread中的部分被Python实现了的静态方法在threading中以模块方
随机推荐
- iis6和iis7限制上传文件(请求头)大小以及不支持FSO解决方法
- 解决Spring Mvc中对象绑定参数重名的问题
- JavaMail实现发送邮件功能
- asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
- python解决Fedora解压zip时中文乱码的方法
- 生成静态页大全[ASP/PHP/ASPX]
- C# 以MDF文件链接数据库的示例代码
- C语言数据结构中定位函数Index的使用方法
- android基础总结篇之二:Activity的四种launchMode
- JS实现文档加载完成后执行代码
- JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
- JQuery动态添加和删除表格行的方法
- js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
- dialog dismiss时键盘不消失的问题浅析及解决办法
- Android编程实现仿易信精美弹出框效果【附demo源码下载】
- C语言求圆周率的简单实现方法
- JS中promise化微信小程序api
- python Pandas库基础分析之时间序列的处理详解
- 一起因MySQL时间戳精度引发的血案分析
- win7 x64系统中安装Scrapy的方法