如何有一个强制和两个可选的位置参数?

How to have one mandatory and two optional positional arguments?

我需要运行一个python文件如下

python runnning_program.py 参数 1 [参数 2] [参数 3]

def main(argument1,argument2 = default2, argument3 = default2):
   code


if __name__ == '__main__': 
   ap = argparse.ArgumentParser()
   ap.add_argument("argument1")
   kwargs = vars(ap.parse_args())
   main(**kwargs)

如何添加 argument2 和 argument3 作为可选的位置参数?

不幸的是,这不起作用。

详细说明一下: 位置参数是强制性的。快速得出的结论是,Python 中的函数始终(并且 始终)被视为具有以下签名:

def some_function(*args, **kwargs):

这意味着位置参数基本上只是解释器的参数列表,并且在传递给函数时将被扩展。 因此,调用该函数时,所有位置参数都需要存在。

这与命名参数的传递方式(“关键字参数”)有很大不同: 它们是那种字典

{'parameter_name': 'parameter_value'}

它们始终存在,因为它们通过具有默认值来定义。

回到原来的问题: 调用您的函数时,按位置而不是按名称传递 kwargs 的选项可能对您有所帮助。

所以,而不是

main(argument1, argument2 = 'default2', argument3 = 'default3')

你随时可以打电话

main(argument1, 'default2', 'default3') 代替。

此外,您可能想看看 argparse 库。