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"] ...
随机推荐
- .Net Core 企业微信更新模版卡片消息
1.搭建回调服务器 可参考:https://www.cnblogs.com/zspwf/p/16381643.html进行搭建 2.编写代码 2.1接口定义 应用可以发送模板卡片消息,发送之后可再通过 ...
- 【故障公告】取代 memcached 的 redis 出现问题造成网站故障
6月19日开始,我们将博客站点的缓存服务器从 memcached 换成了 redis,稳定运行了3天,今天上午访问高峰突然出现问题,在 11:00-12:30 期间影响了网站的正常访问,由此给您带来麻 ...
- webpack中文api
1. 简介 1.Plugins://插件 webpack has a rich plugin interface.Most of the features are internal plug ...
- 『现学现忘』Docker基础 — 39、实战:自定义Tomcat9镜像
目录 1.目标 2.准备 3.编写Dockerfile文件 4.构建镜像 5.启动镜像 6.验证容器是否能够访问 7.向容器中部署WEB项目,同时验证数据卷挂载 (1)准备一个简单的WEB项目 (2) ...
- go统计字符串及数组中出现次数
数组:统计出现字数 package main import "fmt" func main() { s := [...]string{"Mlxg", " ...
- Excel表函数自动生成SQL
前言 在平常的工作中,多多掌握一点这样的小技巧,能够帮助我们省去很多时间: 1.数据库对应的表如下: 2.excel中需要导入的数据如下: 3.excel中sql的写法: ="insert ...
- 加班?不存在的啦~Python处理Excel,学会这十四个方法,工作量减少大半
现在Python横行的年代,财务.人事.行政等等岗位多少得学点Python,省事又不费脑!所有操作都用Python自动实现, 加班?不存在的! excel和python其实都是工具,不要也不用拿去做对 ...
- Object类中wait带参方法和notifyAll方法和线程间通信
notifyAll方法: 进入到Timed_Waiting(计时等待)状态有两种方式: 1.sleep(long m)方法,在毫秒值结束之后,线程睡醒,进入到Runnable或BLocked状态 2. ...
- python requests 使用代理池访问https站点返回乱码
问题表现: 检查一下正常的请求头里面accept-encoding字段是否包含br,如果包含,果断pip install urllib3[brotli],详见ssl-warnings 记录另外一个问题 ...
- NFS介绍与搭建
一.NFS的介绍 1.1.什么是NFS NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布. NFS在文件传 ...