Python 3 实现定义跨模块的全局变量和使用
2017-01-30 13:37
656 查看
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。
Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量:
我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x; var y=2;var z='222'),这样的话,在函数内部就无法操作外部的变量了,因为它总会认为你是在定义一个新变量并且赋值,不过 global 就可以解决这个问题。
global 的基础用法 :
这个时候,即使你在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错 未定义。
具体代码:
相信如果你看懂了就应该知道思路了,利用global的单独文件全局性,从而可以定义在一个文件中的全局变量,然后这个单个文件的全局变量可以保存多个文件的共同全局变量
操作的时候,以Key对Value 的方法操作,我相信大家都懂。
然后其他的任何文件只需要导入即可使用:
就这么简单~
就这样就可以实现跨文件的全局变量使用;
并且还有一个简单但是强大的全局变量管理器,你可以自己添油加醋,实现一些比如全局变量禁止直接修改,禁止修改某些只可读的全局变量等等。
Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量:
我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x; var y=2;var z='222'),这样的话,在函数内部就无法操作外部的变量了,因为它总会认为你是在定义一个新变量并且赋值,不过 global 就可以解决这个问题。
global 的基础用法 :
x = 6 def func(): global x #定义外部的x x = 1 func() print (x) #输出1
这个时候,即使你在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错 未定义。
那么我们怎么办?
借鉴global 关键字的思路,既然在一个文件里面可以生效的话,那么我们就专门为全局变量定义一个“全局变量管理模块”就好了具体代码:
# -*- coding: utf-8 -*- def _init():#初始化 global _global_dict _global_dict = {} def set_value(key,value): """ 定义一个全局变量 """ _global_dict[key] = value def get_value(key,defValue=None): """ 获得一个全局变量,不存在则返回默认值 """ try: return _global_dict[key] except KeyError: return defValue
相信如果你看懂了就应该知道思路了,利用global的单独文件全局性,从而可以定义在一个文件中的全局变量,然后这个单个文件的全局变量可以保存多个文件的共同全局变量
操作的时候,以Key对Value 的方法操作,我相信大家都懂。
# -*- coding:utf-8 -*- from YourPage import gol gol._init()#先必须在主模块初始化(只在Main模块需要一次即可) #定义跨模块全局变量 gol.set_value('CODE','UTF-8') gol.set_value('PORT',80) gol.set_value('HOST','127.0.0.1')
然后其他的任何文件只需要导入即可使用:
# -*- coding: utf-8 -*- from YourPage import gol #不需要再初始化了 ROOT = gol.get_value('ROOT',80) CODE = gol.get_value('CODE')
就这么简单~
就这样就可以实现跨文件的全局变量使用;
并且还有一个简单但是强大的全局变量管理器,你可以自己添油加醋,实现一些比如全局变量禁止直接修改,禁止修改某些只可读的全局变量等等。
感谢你的耐心阅读,如果对你有所帮助我将十分荣幸,如有错误之处望指正。
相关文章推荐
- Python 3 实现定义跨模块的全局变量和使用
- 在python中实现生产者和消费者的例子(四):使用thread模块和全局变量
- 在python中实现生产者和消费者的例子(五):使用threading模块和全局变量
- python3 - 声明全局变量并在不同模块中的使用.
- python3 动态模块导入与全局变量使用
- python多文件使用同一个全局变量的定义和使用方法
- Python 中模块间全局变量的使用上的注意
- 在web.xml定义,在网页中使用变量实例 使用只有创建变量的servlet才可以访问的<init-param>方式 附带登陆和跳转实现
- MFC中全局变量的定义及使用
- 使用模块添加全局变量
- python全局变量使用注意事项_
- python 学习记录(5)-变量、模块名的命名规则及random模块使用
- 不使用引用和全局变量实现函数参数传递
- 在ASP.net中如何定义和使用全局变量
- 使用全局哈希表实现字符串变量的多国语言
- MFC中全局变量的定义及使用
- Android全局变量的定义与使用
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- [置顶] 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 全局变量声明,定义与使用方法