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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python实现类的创建与使用方法示例
Jul 25 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
总结python中pass的作用
Feb 27 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python类的动态绑定实现原理
Mar 21 Python
python中的None与NULL用法说明
May 25 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 源代码压缩小工具
2009/12/22 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
关于环保的活动方案
2014/08/25 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
葬礼主持词
2015/07/02 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
总结Python连接CS2000的详细步骤
2021/06/23 Python