【发布时间】:2013-07-21 01:40:25
【问题描述】:
我见过与此类似但不完全相同的问题。我有一个表情
if foo == ....
return -1
elif myFunction(bar) != -1:
return myFunction(bar)
elif ...
我不想计算myFunction(bar) 两次。如果它只是一个if,我可以这样做
temp = myFunction(bar)
if temp != -1
return temp
但是,如果我们按照初始的 if 进行操作,则使用 elif 会导致不必要的 temp 计算。
我可以看到一个解决方案
if ...
else
temp = myFunction(bar)
if temp != -1:
return temp
elif ...
但现在开始变得更加丑陋。有没有更好的方法来做到这一点?
【问题讨论】:
-
如果您不想调用
myFunction(bar)两次,并且您只能在检查foo后调用它,那么除了使用中间变量来存储结果。没有什么魔法可以解决这个基本的逻辑问题:-)。我认为一个解决方案在反映正确的逻辑时并不难看。您只需要小心将最后一个elif放在哪里。 -
但是
if(至少在示例中)无论如何都包含return,所以您可以只使用一个临时值并开始一个新的if块.
标签: python if-statement variable-assignment