【发布时间】:2016-04-28 04:31:13
【问题描述】:
我想编写一个 Python 脚本,通过 argparse 获取一些必要的位置参数和一些可选的命令行参数:
- 让我们调用位置参数
a,b,c,以及可选参数x,y,z。 - 在我的 Python 脚本中,我想将这些参数传递给一个函数;具体来说,我希望
a,b,c以*args的形式传递,x,y,z以**kwargs的形式传递,后者保留其名称。 - 我想多次使用不同的函数和不同数量的位置参数和可选参数来执行此操作。是否有一种简洁、灵活和/或 Python 式的方式来执行此操作?
下面是一些示例代码:
import argparse
def parse():
parser = argparse.ArgumentParser()
parser.add_argument('a', help='1st arg')
parser.add_argument('b', help='2nd arg')
parser.add_argument('c', help='3rd arg')
parser.add_argument('-x', '--x', help='1st kwarg')
parser.add_argument('-y', '--y', help='2nd kwarg')
parser.add_argument('-z', '--z', help='3rd kwarg')
return parser.parse_args()
def func(*args, **kwargs):
a, b, c = args
print 'a=', a
print 'b=', b
print 'c=', c
for k, v in kwargs.iteritems():
print '%s=' % k, v
if __name__ == '__main__':
all_args = parse()
### need to split all_args into args and kwargs here ###
func(*args, **kwargs)
【问题讨论】:
-
“多次使用不同的功能和不同数量的...参数”到底是什么意思?我认为您必须提供一个示例,说明如何调用函数,以及脚本将如何处理传递的参数。
标签: python argparse args keyword-argument