2016-04-15 3 views
-2

Предполагая, что '-run' предоставляется в качестве аргумента, как объявить условие opt.run в переменной вместо его логического значения, используя операцию 'или' series?Как распечатать оцениваемое условие вместо его логического значения в python?

parser = argparse.ArgumentParser() 
parser.add_argument("--pre",dest="pre",action="store_true") 
parser.add_argument("--run",dest="run",action="store_true") 
parser.add_argument("--post",dest="post",action="store_true") 
opt = parser.parse_args() 

step = opt.pre or opt.run or opt.post 

печати «шаг» приводит к «True», но то, что мне действительно нужно, это условие, которое «True» - то есть «opt.run».

ответ

2

То, что вы пытаетесь сделать что-то вроде:

step = "pre" if opt.pre else "run" if opt.run else "post" if opt.post else "default" 
print(step) 

Если у вас логика, пользователь должен выбрать один из трех вы могли упасть последним, если:

step = "pre" if opt.pre else "run" if opt.run else "post" 

Но Я бы порекомендовал разбить его на if/elif's:

step = "default" 
if opt.run: 
    step = "run" 
elif opt.pre: 
    step = "pre" 
elif opt.post: 
    step = "post" 
+0

Thanks Padraic, надеялся на однострочный, но пошел с вашим предложением после LL. Хорошее напоминание о том, что «элегантный» не всегда означает «лучше». – learn2leavethetable

Смежные вопросы