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 struct.unpack
Sep 06 Python
python 生成目录树及显示文件大小的代码
Jul 23 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Django的分页器实例(paginator)
Dec 01 Python
windows10下python3.5 pip3安装图文教程
Apr 02 Python
mac 安装python网络请求包requests方法
Jun 13 Python
Python实现App自动签到领取积分功能
Sep 29 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
python中lower函数实现方法及用法讲解
Dec 23 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
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
js 单引号 传递方法
2009/06/22 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
javascript 闭包详解
2015/07/02 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
JS中的BOM应用
2018/02/02 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
Vue js with语句原理及用法解析
2020/09/03 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
群众路线对照检查材料
2014/09/22 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
2015年环保局工作总结
2015/05/22 职场文书
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python