我已经在Python,其中ori是一个字符串Python能否避免在语句中重新评估?
[ori[ori.rfind(' ') + 1:], ori[:ori.rfind(' ')]]
我们可以看到ori.rfind(”“)被调用了两次,是解释足够聪明下面的语句只是计算函数只有一次?
我们可以做到以下几点:
s = ori.rfind(' ') return [ori[s+1:], ori[:s]]
但这种利用两行。我打算在列表理解中使用这个语句,并希望这个函数是一行。
在这种情况下,解释器实际上更容易理解,因为字符串是不可变的。我的猜测可能是解释者可以聪明地避免重新评估。一般来说,如果对象是不可变的,解释器是否足够聪明?
“使用两行很少pythonic”?! – NPE 2013-03-15 17:29:18
为什么它会变得不那么pythonic? – 2013-03-15 17:29:27
在几乎所有情况下,使用两行*都是不正确的*。当它是正确的时候,它很少重要。当它是正确的并且很重要时,通常很难自动完成。 – delnan 2013-03-15 17:34:40