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最基本的数据类型以及对元组的介绍
Apr 14 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
django1.11.1 models 数据库同步方法
May 30 Python
django query模块
Apr 20 Python
Python中and和or如何使用
May 28 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
Python集合的基础操作
Nov 01 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
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
js更优雅的兼容
2010/08/12 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
django删除表重建的实现方法
2019/08/28 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
大学毕业寄语大全
2014/04/10 职场文书
师恩难忘教学反思
2014/04/27 职场文书
房地产推广策划方案
2014/05/19 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
会计实训报告范文
2014/11/04 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书