我正在尝试使用* 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 = 10
和debug=False
python mycode.py var1=4.3
我想拥有var1 = 4.3
和debug=False
python mycode.py debug='True'
我想拥有var1 = 10
和debug=True
python mycode.py var1=-5 debug='True'
我想拥有var1 = -5
和debug=True
python mycode.py debug='True' var1=-5
我想拥有var1 = -5
和debug=True
最后一件事,还有没有一种方法可以使用户使用debug=true
来调用所有小写字母而不会触发错误消息?
预先感谢您的帮助
答案 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