以任意顺序传递可选参数

时间:2018-11-05 07:29:24

标签: python python-2.7

我正在尝试使用* args和** kwargs通过python代码学习一些新技巧。 调用程序时,我想传递或不传递可以以任意顺序出现的两个可选参数。显然,如果在调用过程中未提供任何参数,则该变量应获得一些默认值。

在我通常的代码中,如果我知道每个参数的确切位置并且必须给定所有参数,我将有类似的东西

import sys
var1 = 10 if len(sys.argv) == 1 else (sys.argv[1])
debug= False if len(sys.argv) < 3 else (sys.argv[2])

但是这次,由于我希望能够以任何顺序给出两个参数中的任何一个,因此我陷入了如何编写它的困境。 做的时候:

  • python mycode.py我想拥有var1 = 10debug=False
  • python mycode.py var1=4.3我想拥有var1 = 4.3debug=False
  • python mycode.py debug='True'我想拥有var1 = 10debug=True
  • python mycode.py var1=-5 debug='True'我想拥有var1 = -5debug=True
  • python mycode.py debug='True' var1=-5我想拥有var1 = -5debug=True

最后一件事,还有没有一种方法可以使用户使用debug=true来调用所有小写字母而不会触发错误消息?

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

*args**kwargs引用函数的参数。在文档中阅读有关内容:More on Defining Functions

对于命令行参数,请再次查看Python docs

  

常用实用程序脚本通常需要处理命令行参数。   这些参数作为列表存储在sys模块的 argv 属性中。例如,以下输出是在命令行上运行python demo.py one two three的结果:

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']
  

[...] argparse模块提供了更强大,更灵活的命令行处理。

Docs for argparse

Tutorial for argparse