njqijie 发表于 2018-11-3 07:23:25

关于 collections模块

# 构造命令行参数:
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 }



下面两行看不懂 帮忙解释下!!!谢谢
namespace = parser.parse_args()#这个也看不懂
command_line_args = { k: v for k, v in vars(namespace).items() if v }这一行看不懂 请帮忙解释下!

塔利班 发表于 2018-11-3 08:18:38

namespace = parser.parse_args()parser模块好像没有这个函数
下面是字典推导式,把vars(namespace)字典中非0非空非假的项目提取出来组成新字典

njqijie 发表于 2018-11-3 10:01:25

塔利班 发表于 2018-11-3 08:18
namespace = parser.parse_args()parser模块好像没有这个函数
下面是字典推导式,把vars(namespace)字典 ...

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

njqijie 发表于 2018-11-3 10:05:22

塔利班 发表于 2018-11-3 08:18
namespace = parser.parse_args()parser模块好像没有这个函数
下面是字典推导式,把vars(namespace)字典 ...

谢谢如没有parser这个模块 应该会报错的

塔利班 发表于 2018-11-3 10:05:52

好吧,那你自己去百度那个模块就行了
页: [1]
查看完整版本: 关于 collections模块