1,要将不定数量的参数传递给一个函数的时候,python提供了位置参数和序列参数
python函数传递参数的方式有两种:
- 位置参数(positional argument) *args 表示多个无名参数,实际是一个tuple
- 关键词参数(keyword argument)**kwargs 表示关键词参数,实际是一个dict
同时使用的话,位置参数必须在关键词参数前面
都使用的时候
>>> def fun(*args, **kwargs):
... print('args=', args)
... print('kwargs=', kwargs)
...
>>> fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')
args= (1, 2, 3, 4)
kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}
使用 *args
>>> def fun(name, *args):
... print('你好:', name)
... for i in args:
... print("你的宠物有:", i)
...
>>> fun("Geek", "dog", "cat")
你好: Geek
你的宠物有: dog
你的宠物有: cat
使用 **kwargs
>>> def fun(**kwargs):
... for key, value in kwargs.items():
... print("{0} 喜欢 {1}".format(key, value))
...
>>> fun(Geek="cat", cat="box")
Geek 喜欢 cat
cat 喜欢 box
2.python中输入参数的传递是:
import argparse
def parse_argument():
argparser = argparse.ArgumentParser()
argparser.add_argument('--annotation_file', type=str, default='')
argparser.add_argument('--output_file', type=str, default='')
argparser.add_argument("--origin", type=str, default="")
argparser.add_argument("--version", type=str, default="")
args = argparser.parse_args()
assert args.version, "[ERROR] Please set --version !"
print("\n[INFO] set origin to {}\n".format(args.origin))
assert args.origin, "[ERROR] Please set --origin !"
print("\n[INFO] set version to {}\n".format(args.version))
assert args.annotation_file, "[ERROR] Please set --annotation_file !"
print("\n[INFO] set annotation_file to {}\n".format(args.annotation_file))
if args.output_file:
print("\n[INFO] set output_file to {}\n".format(args.output_file))
return args