Discuss / Python / 命名空间不太懂,哪位大佬能帮忙解释一下

命名空间不太懂,哪位大佬能帮忙解释一下

Topic source

青铜神裔

#1 Created at ... [Delete] [Delete and Lock User]
# 构造命令行参数:
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 } #尤其是这句,完全不明白这个dict是怎么构建的

# 组合成ChainMap:
combined = ChainMap(command_line_args, os.environ, defaults)

比如你在命令行下输入:

$ python3 use_chainmap.py -u bob

那么“namespace”的数值就会被设定为{'h':None,‘user’:'bob','color':None},其中‘h’来源于系统设定自动添加的,‘user’是根据代码中输入的‘--user’处理而来。

{ k: v for k, v in vars(namespace).items() if v}

就相当于把namespace所有值为None的元素清理出去


  • 1

Reply