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实现百度关键词排名查询
Mar 30 Python
Python中AND、OR的一个使用小技巧
Feb 18 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
python笔记:mysql、redis操作方法
Jun 28 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python实现自动发送邮件功能
Mar 02 Python
python实现数据库跨服务器迁移
Apr 12 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
两个php日期控制类实例
2014/12/09 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
js静态作用域的功能。
2006/12/25 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
商超业务员岗位职责
2014/03/12 职场文书
婚礼主持词开场白
2014/03/13 职场文书
低碳生活倡议书
2014/04/14 职场文书
竞选村长演讲稿
2014/04/28 职场文书
生日庆典策划方案
2014/06/02 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
公司离职证明标准范本
2014/10/05 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python
Nginx 常用配置
2022/05/15 Servers
Java完整实现记事本代码
2022/06/16 Java/Android