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 含参构造函数实例详解
May 25 Python
基于Python os模块常用命令介绍
Nov 03 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
python try except 捕获所有异常的实例
Oct 18 Python
python numpy元素的区间查找方法
Nov 14 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Python定义函数实现累计求和操作
May 03 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
pytorch--之halfTensor的使用详解
May 24 Python
一起来学习Python的元组和列表
Mar 13 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
yii操作cookie实例简介
2014/07/09 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php导入模块文件分享
2015/03/17 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Python中的变量和作用域详解
2016/07/13 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
美术专业个人自我评价
2014/01/18 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
解除劳动合同证明书
2014/09/26 职场文书
读后感作文评语
2014/12/25 职场文书
公司介绍信范文
2015/01/31 职场文书
煤矿安全保证书
2015/02/27 职场文书
高中语文教学反思范文
2016/02/16 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
python自动化八大定位元素讲解
2021/07/09 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL