Python 3 实现定义跨模块的全局变量和使用教程

 更新时间:2019年07月07日 09:48:36   作者:_Suwings  
这篇文章主要介绍了Python 3 实现定义跨模块的全局变量和使用,本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。

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数据可视化 pyecharts实现各种统计图表过程详解

    Python数据可视化 pyecharts实现各种统计图表过程详解

    这篇文章主要介绍了Python数据可视化 pyecharts实现各种统计图表过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 记录Django开发心得

    记录Django开发心得

    学习使用Django也有一个月了,也该整理整理了,给自己,也给大家分享一下哈(再次鄙视国内的IT技术文档/问答环境,抄抄抄,Cao你妹啊,你们TM自己写点不行啊!!!!)。当然我刚学Django/Python,也欢迎指点错误的地方。
    2014-07-07
  • 使用jupyter notebook将文件保存为Markdown,HTML等文件格式

    使用jupyter notebook将文件保存为Markdown,HTML等文件格式

    这篇文章主要介绍了使用jupyter notebook将文件保存为Markdown,HTML等文件格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python OpenCV学习笔记直方图反向投影的实现

    python OpenCV学习笔记直方图反向投影的实现

    这篇文章主要介绍了python OpenCV学习笔记直方图反向投影的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python语法详解之decorator装饰器

    Python语法详解之decorator装饰器

    装饰器 decorator 或者称为包装器,是对函数的一种包装,今天通过本文给大家分享Python语法详解之decorator装饰器的相关知识,感兴趣的朋友一起看看吧
    2021-10-10
  • python保存大型 .mat 数据文件报错超出 IO 限制的操作

    python保存大型 .mat 数据文件报错超出 IO 限制的操作

    这篇文章主要介绍了python保存大型 .mat 数据文件报错超出 IO 限制的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • 常见的Python异常及处理方法总结

    常见的Python异常及处理方法总结

    本文主要介绍了Python中常见异常,什么是异常,回溯信息,简单的异常处理格式,异常嵌套以及异常处理注意事项与建议,有需要的朋友可以借鉴参考下
    2021-09-09
  • Python利用memory_profiler实现内存分析

    Python利用memory_profiler实现内存分析

    memory_profiler是第三方模块,用于监视进程的内存消耗以及python程序内存消耗的逐行分析。本文将利用memory_profiler实现内存分析,需要的可以参考一下
    2022-10-10
  • 带你了解python装饰器

    带你了解python装饰器

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里。Python中的装饰器的概念经常会让人搞得一头雾水,所以今天就好好来分析一下python中的装饰器
    2017-06-06
  • 详解Python中DOM方法的动态性

    详解Python中DOM方法的动态性

    这篇文章主要介绍了详解Python中DOM方法的动态性,xml.dom模块在Python的网络编程中相当有用,本文来自于IBM官网的开发者技术文档,需要的朋友可以参考下
    2015-04-04

最新评论