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爬虫的基本写法
Jan 08 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
python TKinter获取文本框内容的方法
Oct 11 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
python调用动态链接库的基本过程详解
Jun 19 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
如何解决python多种版本冲突问题
Oct 13 Python
python实现黄金分割法的示例代码
Apr 28 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获得文件扩展名三法
2006/11/25 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
requirejs + vue 项目搭建详解
2017/06/16 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
Python算法之栈(stack)的实现
2014/08/18 Python
python实现五子棋小程序
2019/06/18 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
会计专业推荐信
2013/10/29 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
销售岗位职责范本
2014/06/12 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
工程资料员岗位职责
2015/04/13 职场文书
高中运动会广播稿
2015/08/19 职场文书