ChainMap & python args parse
2024-10-01 04:43:43
python的内建模块ChainMap
可以把一组dict
串起来并组成一个逻辑上的dict
。ChainMap
本身也是一个dict
,但是查找的时候,会按照顺序在内部的dict
依次查找。
什么时候使用ChainMap
最合适?举个例子:应用程序往往都需要传入参数,参数可以通过 命令行 | 环境变量 | 默认参数
传入,
我们可以用ChainMap
实现参数的查找优先级:命令行参数 > 环境变量 > 默认参数。
下面的代码演示了如何查找user
和color
这两个参数:
from collections import ChainMap
import os, argparse
# 构造缺省参数:
defaults = {
'color': 'red',
'user': 'guest'
}
# 构造命令行参数:
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user')
parser.add_argument('-c', '--color')
namespace = parser.parse_args()
command_line_args = { k: v for k, v in vars(namespace).items() if v }
# 组合成ChainMap:
combined = ChainMap(command_line_args, os.environ, defaults)
# 打印参数:
print('color=%s' % combined['color'])
print('user=%s' % combined['user'])
没有任何参数时,打印出默认参数:
$ python3 use_chainmap.py
color=red
user=guest
当传入命令行参数时,优先使用命令行参数:
$ python3 use_chainmap.py -u bob
color=red
user=bob
同时传入命令行参数和环境变量,命令行参数的优先级较高:
$ user=admin color=green python3 use_chainmap.py -u bob
color=green
user=bob
最新文章
- windows 7(32/64位)GHO安装指南(系统安装篇)~重点哦!!~~~~
- Ajax入门(一)
- 【原创】SQL常用函数
- javaScript代码执行顺序
- kuangbin_MST A (POJ 1251)
- C# 绘制统计图(柱状图, 折线图, 扇形图)
- MVVM模式的一个小例子
- LeetCode_Rotate Image
- 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson
- firemonkey打开子窗体(匿名回调函数)
- Swift - 使用CATransition制作过渡动画(页面切换转场效果)
- android 5.0新特性
- Vim/gvim容易忘记的快捷键
- angular.js之作用域scope'@','=','&;'
- Myeclipse10破解版安装包
- 测试 ASP.NET Core API Controller
- Java虚拟机详解----JVM内存结构
- eclipse中的web项目部署路径
- siteServer创建网站中Mysql和SqlServer的区别
- zabbix3.4 监控网卡流量设置差量
热门文章
- 十一、结构模式之享元(Flyweight)模式
- 力扣—Remove Nth Node From End of List(删除链表的倒数第N个节点) python实现
- 修改Docker中容器的时间和宿主主机时间一致
- java 延时
- github 配置ssh
- pipeline语法之environment,dir(),deleteDir()方法,readJSON,writeJSON
- 关键字group by 、 Having的 用法
- JVM&;GC
- testNG之组测试
- css 导航菜单+下拉菜单