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 thread 并发且顺序运行示例
Apr 09 Python
python实现批量改文件名称的方法
May 25 Python
Python定时执行之Timer用法示例
May 27 Python
Python实现控制台进度条功能
Jan 04 Python
python使用str & repr转换字符串
Oct 13 Python
Django中Forms的使用代码解析
Feb 10 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
python滑块验证码的破解实现
Nov 10 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php动态变量定义及使用
2015/06/10 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JS功能代码集锦
2016/05/04 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
JS回调函数深入理解
2019/10/16 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
python中的sort方法使用详解
2014/07/25 Python
详解Python中的type()方法的使用
2015/05/21 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
pycharm 安装JPype的教程
2019/08/08 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
flask项目集成swagger的方法
2020/12/09 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
四下基层实施方案
2014/03/28 职场文书
同学聚会策划方案
2014/06/06 职场文书
完整版商业计划书
2014/09/15 职场文书
钳工实训报告总结
2014/11/04 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
六年级语文教学反思
2016/03/03 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
python正则表达式re.search()的基本使用教程
2021/05/21 Python
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
基于Python实现nc批量转tif格式
2022/08/14 Python