概述
这个问题已经有很多高投票率的答案和一个公认的答案,但到目前为止,所有这些问题都被表达布尔问题的各种方式分散了注意力,错过了一个关键点:I have a python script that can receive either zero or three command
line arguments. (Either it runs on default behavior or needs all three
values specified)
这个逻辑不应该首先由代码负责,而应该由argparse模块处理。不要费心编写复杂的if语句,而是希望设置如下参数解析器:#!/usr/bin/env python
import argparse as ap
parser = ap.ArgumentParser()
parser.add_argument('--foo', nargs=3, default=['x', 'y', 'z'])
args = parser.parse_args()
print(args.foo)
是的,它应该是一个选项而不是一个位置参数,因为它毕竟是可选的参数。
编辑:为了解决LarsH在评论中的问题,下面是一个示例,说明如果您确定要使用3或0位置参数的接口,您可以如何编写它。我认为前面的接口是更好的样式,因为可选的参数应该是选项,但是为了完整起见,这里有一种替代方法。注意在创建解析器时重写kwarg usage,因为argparse将自动生成误导性的用法消息,否则!#!/usr/bin/env python
import arg
最后
以上就是传统镜子为你收集整理的python中not a and b_Python语法“如果a、b或c,但不是全部”的全部内容,希望文章能够帮你解决python中not a and b_Python语法“如果a、b或c,但不是全部”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复