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获取糗百图片代码实例
Dec 18 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
Python super()方法原理详解
Mar 31 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
PyTorch中的拷贝与就地操作详解
Dec 09 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&MYSQL分页原理及实现
2007/01/02 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
详解php中 === 的使用
2016/10/24 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
python使用requests.session模拟登录
2019/08/09 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
安全大检查实施方案
2014/02/22 职场文书
职工代表大会主持词
2014/04/01 职场文书
读书之星事迹材料
2014/05/12 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
求职推荐信范文
2015/03/27 职场文书
公司晚会主持词
2019/04/17 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Django 如何实现文件上传下载
2021/04/08 Python