如何有一个强制和两个可选的位置参数?
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
库。
我需要运行一个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
库。