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判断windows隐藏文件的方法
Mar 21 Python
python计算N天之后日期的方法
Mar 31 Python
Django自定义分页效果
Jun 27 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
python面试题小结附答案实例代码
Apr 11 Python
python同步两个文件夹下的内容
Aug 29 Python
python递归下载文件夹下所有文件
Aug 31 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
jenkins+python自动化测试持续集成教程
May 12 Python
selenium判断元素是否存在的两种方法小结
Dec 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
php中this关键字用法分析
2016/12/07 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
python判断正负数方式
2020/06/03 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
绩效管理实施方案
2014/03/19 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
数学教师求职信范文
2015/03/20 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python