if语句中的几个参数

时间:2012-11-22 19:38:34

标签: python python-2.7

我有一个依赖argparse的脚本。脚本的主体有如下语句:

if results.short == True and results.verbose == False and results.verbose2 == False and results.list == False and results.true == False:

有没有更短的方法呢?假设我有超过这5个参数,在每个语句中键入每个参数似乎都是重复性的工作。

如果做的话不能:

if results.short == True and "results.%s"== False % (everyotherresults.something):

我正在为Python 2.7编写

2 个答案:

答案 0 :(得分:4)

您可以在列表中使用any函数,并将所有参数从列表中的第2个移开: -

if results.short and \
   not any([results.verbose, results.verbose2, results.list, results.true]):
如果列表中至少有一个值为any,则

True函数返回True。因此,只需使用not any,如果列表中的所有值均为True,则会返回False

是的,您不需要将布尔值与TrueFalse进行比较。

答案 1 :(得分:4)

你不应该在布尔表达式中与bool进行比较,例如:

if (results.short 
    and not results.verbose 
    and not results.verbose2 
    and not results.list 
    and not results.true):