我有一个依赖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编写
答案 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
。
是的,您不需要将布尔值与True
或False
进行比较。
答案 1 :(得分:4)
你不应该在布尔表达式中与bool
进行比较,例如:
if (results.short
and not results.verbose
and not results.verbose2
and not results.list
and not results.true):