python_跨文件二维全局变量传参
因为业务需要,我需要创建一个可以在多模块公用全局变量,根据https://www.jianshu.com/p/6cee728f3490的代码,因为他提供的只能生成 { k: v, kk: v ... } 的数据格式
我需要构建二维的全局变量格式,是 { { k: v }, { k: v} ... } 的结构,就对代码进行了一些改动,供大家学习参考
class GlobalMap:
# 拼装成字典构造全局变量 借鉴map 包含变量的增删改查
map = {"default": {}}
def set_map(self, key, value, group="default"):
if isinstance(value, dict):
value = json.dumps(value)
if group in self.map: # 判断key是否存在
if key in self.map[group]:
self.map[group][key] = value
else:
self.map[group].setdefault(key, value)
else:
self.map.setdefault(group, {key: value})
def set(self, group="default", **keys):
try:
for key_, value_ in keys.items():
self.map[group][key_] = str(value_)
log.debug(key_ + ":" + str(value_))
except BaseException as msg:
log.error(msg)
raise msg
def del_map(self, key, group="default"):
try:
del self.map[group][key]
return self.map
except KeyError:
log.error(f" '{group}' 或 key:'{str(key)}' 不存在")
def get(self, *args, group="default"):
try:
dic = {group: {}}
for key in args:
if args[0] == 'all' and len(args) == 1:
dic[group] = self.map[group]
elif len(args) == 1:
dic[group] = self.map[group][key]
log.debug(group + "->" + key + ":" + str(dic))
else:
dic[group][key] = self.map[group][key]
return dic[group]
except KeyError:
log.error(f" '{group}' 或 key:'{str(key)}' 不存在")
return 'Null_'
测试代码
a = GlobalMap()
a.set_map("aa", "66", group="demo")
a.set_map("bb", "77", group="demo")
a.set_map("cc", "88", group="demo")
print(a.map)
c = a.get("aa", "bb", group="demo")
print(c)
输出结果
1. {'default': {}, 'demo': {'aa': '66', 'bb': '77', 'cc': '88'}}
2. {'aa': '66', 'bb': '77'}
input
1. c = a.get("aa", group="demo")
output
1. 66
input
c = a.get("all", group="demo")
output
{'aa': '66', 'bb': '77', 'cc': '88'}
如果对你有帮助的话麻烦一键三连哦(*^_^*)
python_跨文件二维全局变量传参的更多相关文章
- C++中用二维数组传参时形参该怎样写[转]
二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写? 要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正 ...
- C语言学习笔记 (006) - 二维数组传参的三种表现形式
# include <stdio.h> # include <stdlib.h> # define M # define N int getdate(int (*sp)[M]) ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- angularjs简单实现$http.post(CORS)跨域及$http.post传参方式模拟jQuery.post
1.开启angularjs的CORS支持 .config(function($httpProvider) { // CORS post跨域配置 $httpProvider.defaults.useXD ...
- php 二维数组传递给 js 问题解决记录
需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode → json → js:eval 即在php中使用json_encode()将php的二维数 ...
- input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。
不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的.解释如下:input[type=file]使用的是onchange去做,onchange监听的为 ...
- input type file onchange上传文件的过程中,同一个文件二次上传无效的问题。
不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的.解释如下:input[type=file]使用的是onchange去做,onchange监听的为 ...
- 单元测试以文件流的形势传参调用api进行测试
[TestMethod] public void Test() { byte[] buffer;//文件转换为二进制流 string path = @"E:\aaa"; Encod ...
- wpf app全局变量传参方法(代码片段 )
清空某行绑定的行数据: int RowIndex = datagrid.SelectedIndex; _Table.Rows[RowIndex]["AVERAGE_PRICE"] ...
随机推荐
- html关键字大全
html标签属性大全 html标签属性大全从网上搜集整理的常用html标签,供朋友们交流学习html用. html标签<marquee> <marquee>...</ma ...
- 二、shell 脚本条件测试
目录 一.条件测试 test 格式 文件测试 文件测试常见选项 整数值比较 字符串比较 浮点数的运算 逻辑测试 二.if语句 1单分支 2双分支结构 3多分支结构 三元运算符 三.case 一.条件测 ...
- Ubuntu-apt-get出错
ubuntu apt-get的时候出现: E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission ...
- WPF开发随笔收录-仿安卓Toast
一.前言 在项目中,经常需要用到消息提醒功能,在以前接触安卓开发那会使用过Toast,于是打算在WPF上也来模仿一个,话不多说,撸起袖子干起来! 二.正文 1.首先新建一个工程,工程的目录如下 2.编 ...
- kali 漏洞扫描
前言 漏洞扫描器是一种能够自动在计算机.信息系统.网络及应用软件中寻找和发现安全弱点的程序.它通过网络对目录系统进行探测,向目标系统发送数据,并将反馈数据与自带的漏洞特征库进行匹配,进而列举目标系统上 ...
- awk内置函数、外部变量
外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...
- 内存泄漏定位工具之 valgrind 使用
1 前言 前面介绍了 GCC 自带的 mtrace 内存泄漏检查工具,该篇主要介绍开源的内存泄漏工具 valgrind,valgrind 是一套 Linux 下,开放源代码的动态调试工具集合,能够检测 ...
- 神经网络可视化《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》
神经网络已经在很多场景下表现出了很好的识别能力,但是缺乏解释性一直所为人诟病.<Grad-CAM:Visual Explanations from Deep Networks via Gradi ...
- Tapdata 与星环 KunDB 完成产品兼容互认证
近日, Tapdata 实时数据即服务平台(Tapdata Real Time DaaS)与星环 KunDB 完成产品兼容互认证.经深圳钛铂数据有限公司和星环信息科技(上海)股份有限公司共同严格测 ...
- linux 运行.sh出现 Permission denied
执行.sh脚本时提示如下错误: [root@Dolen2021 redis]# ./startRedis.sh -bash: ./startRedis.sh: Permission denied [r ...