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怎么学好python?
Oct 07 Python
Python 文件重命名工具代码
Jul 26 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
Python操作MongoDB详解及实例
May 18 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
python 画图 图例自由定义方式
Apr 17 Python
python使用建议与技巧分享(一)
Aug 17 Python
浅析python中的del用法
Sep 02 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
Python实现简繁体转换
Jun 07 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基本语法总结
2014/09/06 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
Python常用知识点汇总
2016/05/08 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
python多线程下信号处理程序示例
2019/05/31 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
EJB的激活机制
2013/10/25 面试题
室内设计专业自荐信
2014/05/31 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
法制工作总结2015
2015/07/23 职场文书
高中生军训感言
2015/08/01 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2016七夕情人节感言
2015/12/09 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python