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获得时间的实例说明
Mar 25 Python
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python实现随机密码字典生成器示例
Apr 09 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
Python中编写ORM框架的入门指引
Apr 29 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python自动化生成IOS的图标
Nov 13 Python
python用requests实现http请求代码实例
Oct 31 Python
如何将json数据转换为python数据
Sep 04 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
python单元测试之pytest的使用
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
wamp安装后自定义配置的方法
2014/08/23 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
js实现右键菜单功能
2016/11/28 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
Python中的Numpy入门教程
2014/04/26 Python
Python中方法链的使用方法
2016/02/23 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
django API 中接口的互相调用实例
2020/04/01 Python
在python中求分布函数相关的包实例
2020/04/15 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
让世界充满爱观后感
2015/06/10 职场文书
军训通讯稿范文
2015/07/18 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android