Python 3 实现定义跨模块的全局变量和使用教程


Posted in Python onJuly 07, 2019

尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。

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 相关文章推荐
Python 装饰器深入理解
Mar 16 Python
python实现图像识别功能
Jan 29 Python
python针对excel的操作技巧
Mar 13 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
python简单实现AES加密和解密
Mar 28 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 Python
kafka-python 获取topic lag值方式
Dec 23 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
Jupyter notebook如何修改平台字体
May 13 Python
python opencv通过4坐标剪裁图片
Jun 05 Python
Python正则表达式匹配日期与时间的方法
Jul 07 #Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 #Python
python保存字典和读取字典的实例代码
Jul 07 #Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 #Python
python 画二维、三维点之间的线段实现方法
Jul 07 #Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 #Python
选择Python写网络爬虫的优势和理由
Jul 07 #Python
You might like
PHP5/ZendEngine2的改进
2006/10/09 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python实现桌面壁纸切换功能
2019/01/21 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
区分python中的进程与线程
2020/08/13 Python
python如何运行js语句
2020/09/09 Python
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
上海期货面试题
2014/01/31 面试题
幼儿园儿童节主持词
2014/03/21 职场文书
禁毒宣传标语
2014/06/19 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
实习协议书
2015/01/27 职场文书
学校实习推荐信
2015/03/27 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
2016情人节宣传语
2015/07/14 职场文书
创业计划书之农家乐
2019/10/09 职场文书