码迷,mamicode.com
首页 > 其他好文 > 详细

5.3.1.1 ChainMap的例子和技巧

时间:2015-12-26 10:06:13      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

下面来提供一些ChainMap类使用的场合和技巧:

模拟python内部查获命名变量的映射链:

#python 3.4

import builtins

import collections

pylookup = collections.ChainMap(locals(), globals(), vars(builtins))

print(pylookup)

在这个例子里,把本地作用域命名、全局作用域命名和内置作用域命名通过链式放在一起,查找时会先本地,再到全局,最后才是内置作用域。

 

让命令行参数优先操作系统环境变量参数,操作系统环境变量参数又优先于缺省值的例子:

#python 3.4

import collections

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}

 

combined = collections.ChainMap(command_line_args, os.environ, defaults)

print(combined[‘color‘])

print(combined[‘user‘])

结果输出如下:

red

guest

在这个例子里,要注意这行代码:

collections.ChainMap(command_line_args, os.environ, defaults)

放前面的字典就是最先搜索,最后面的就是最后搜索。

 


蔡军生  QQ:9073204 深圳

5.3.1.1 ChainMap的例子和技巧

标签:

原文地址:http://blog.csdn.net/caimouse/article/details/50407425

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!