因为业务需要,我需要创建一个可以在多模块公用全局变量,根据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_跨文件二维全局变量传参的更多相关文章

  1. C++中用二维数组传参时形参该怎样写[转]

    二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写? 要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正 ...

  2. C语言学习笔记 (006) - 二维数组传参的三种表现形式

    # include <stdio.h> # include <stdlib.h> # define M # define N int getdate(int (*sp)[M]) ...

  3. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

  4. angularjs简单实现$http.post(CORS)跨域及$http.post传参方式模拟jQuery.post

    1.开启angularjs的CORS支持 .config(function($httpProvider) { // CORS post跨域配置 $httpProvider.defaults.useXD ...

  5. php 二维数组传递给 js 问题解决记录

    需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode  →   json  →  js:eval 即在php中使用json_encode()将php的二维数 ...

  6. input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。

    不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的.解释如下:input[type=file]使用的是onchange去做,onchange监听的为 ...

  7. input type file onchange上传文件的过程中,同一个文件二次上传无效的问题。

    不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的.解释如下:input[type=file]使用的是onchange去做,onchange监听的为 ...

  8. 单元测试以文件流的形势传参调用api进行测试

    [TestMethod] public void Test() { byte[] buffer;//文件转换为二进制流 string path = @"E:\aaa"; Encod ...

  9. wpf app全局变量传参方法(代码片段 )

    清空某行绑定的行数据: int RowIndex = datagrid.SelectedIndex; _Table.Rows[RowIndex]["AVERAGE_PRICE"] ...

随机推荐

  1. 数字图像处理-基于matlab-直方图均匀化,傅立叶变换,图像平滑,图像锐化

    直方图均匀化 任务:用MATLAB或VC或Delphi等实现图像直方图均匀化的算法. clc;clear;close all; % 清除工作台 % path(path,'..\pics'); % 设置 ...

  2. 『现学现忘』Docker基础 — 39、实战:自定义Tomcat9镜像

    目录 1.目标 2.准备 3.编写Dockerfile文件 4.构建镜像 5.启动镜像 6.验证容器是否能够访问 7.向容器中部署WEB项目,同时验证数据卷挂载 (1)准备一个简单的WEB项目 (2) ...

  3. RPA SAP财务内部对账机器人

    [简介] 本机器人用于使用SAP软件的集团公司间往来对账前台登录SAP账户和密码,需退出PC微信,输入法切换为英文半角状态. [详细流程] 1.清空Excel-VBA管理工具原始数据 2.输入对账时间 ...

  4. windows server2012R2 上 .net core IIS 部署--应用程序池 自动停止

    在windows server2016安装部署.NET CORE时,只需要将.net core应用程序池设置无托管,然后对应你项目的版本安装一个dotnet-hosting-2.2.6-win.exe ...

  5. springboot项目上传存储图片到七牛云服务器

    springboot项目上传存储图片到七牛云服务器 问题描述: 当图片存在本地时会出现卡顿的现象.比如一篇图文混排的文章,如果图片没有加载完,可能整个文章都显示不出来,因为它们都是用的同一个服务器. ...

  6. win10设置Python程序定时运行(设置计划任务)

    今天来设置一下定时执行Pycharm内的脚本: 这个要基于win10 的任务计划程序(设置 > 控制面板 > 系统和安全 > 管理工具 > 任务计划程序) 1. create ...

  7. 01. DOCKER - 容器技术

    什么是容器 对于容器这个词,大部分人第一时间想到的肯定是生活中常见瓶瓶罐罐,用来装水的东西.它给人的第一感觉就是能 "装". 而在 IT 领域,Container 就被直译为容器, ...

  8. Css3入门详解

    一.Css基本语法 1.Html和Css没分开时 点击查看代码 <!DOCTYPE html> <html lang="en"> <head> ...

  9. 查询postgresql表结构和索引

    通过系统数据字典查询表结构 selectcol.table_schema,col.table_name,col.ordinal_position,col.column_name,col.data_ty ...

  10. 自定义注解_格式&本质和自定义注解_属性定义

    自定义注解: 格式: public @interface 注解名称{} 本质:注解本质上就是一个接口,该接口默认继承Annotation接口 public interface MyAnno exten ...