设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12478|回复: 0

Python跨文件全局变量的使用技巧

[复制链接]

76

主题

0

回帖

240

积分

中级会员

Rank: 3Rank: 3

积分
240
发表于 2022-3-26 11:00:40 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。
Python 中global关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量:
我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x; var y=2;var z='222'),这样的话,在函数内部就无法操作外部的变量了,因为它总会认为你是在定义一个新变量并且赋值,不过global就可以解决这个问题。
global 的基础用法:
  1. x = 6
  2. def func():
  3.     global x #定义外部的x
  4.     x = 1
  5. func()
  6. print (x)
  7. #输出1
复制代码
这个时候,即使你在另外一个py文件 再次使用global x也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错 未定义。
那么我们怎么办?
借鉴global 关键字的思路,既然在一个文件里面可以生效的话,那么我们就专门为全局变量定义一个“全局变量管理模块”就好了
新建一个py文件,文件名是:gol.py,具体代码:
  1. # -*- coding: utf-8 -*-
  2. def _init():#初始化
  3.     global _global_dict
  4.     _global_dict = {}
  5. def set_value(key,value):
  6.     """ 定义一个全局变量 """
  7.     _global_dict[key] = value
  8. def get_value(key,defValue=None):
  9.   """ 获得一个全局变量,不存在则返回默认值 """
  10.     try:
  11.         return _global_dict[key]
  12.     except KeyError:
复制代码
相信如果你看懂了就应该知道思路了,利用global的单独文件全局性,从而可以定义在一个文件中的全局变量,然后这个单个文件的全局变量可以保存多个文件的共同全局变量
操作的时候,以Key对Value 的方法操作,我相信大家都懂。
  1. # -*- coding:utf-8 -*-
  2. import gol
  3. gol._init()#先必须在主模块初始化(只在Main模块需要一次即可)
  4. #定义跨模块全局变量
  5. gol.set_value('uuid',uuid)
  6. gol.set_value('token',token)
复制代码
然后其他的任何文件只需要导入即可使用:
  1. # -*- coding: utf-8 -*-
  2. import gol
  3. #不需要再初始化了
  4. ROOT = gol.get_value('uuid')
  5. CODE = gol.get_value('token')
复制代码
就这样就可以实现跨文件的全局变量使用;
并且还有一个简单但是强大的全局变量管理器,你可以自己添油加醋,实现一些比如全局变量禁止直接修改,禁止修改某些只可读的全局变量等等。
到此这篇关于Python跨文件全局变量的使用的文章就介绍到这了,更多相关Python跨文件全局变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表