1

我有一个依赖于 argparse 的脚本。脚本的主体有这样的 if 语句:

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 编写

4

2 回答 2

4

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

if results.short and \
   not any([results.verbose, results.verbose2, results.list, results.true]):

anyTrue如果列表中至少有一个值为 ,则函数返回True。因此,只需使用,如果列表中的所有值都是not any,它将返回。TrueFalse

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

于 2012-11-22T19:40:39.733 回答
4

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

if (results.short 
    and not results.verbose 
    and not results.verbose2 
    and not results.list 
    and not results.true):
于 2012-11-22T19:43:21.417 回答