我在 Python 中有以下语句,其中 ori 是一个字符串
[ori[ori.rfind('') + 1:], ori[:ori.rfind('')]]
我们可以看到 ori.rfind(' ') 被调用了两次,解释器是否足够聪明,只评估函数一次?
我们可以做到以下几点:
s = ori.rfind(' ') 返回 [ori[s+1:], ori[:s]]
但这使用了两条线。我打算在对字符串列表的列表理解中使用这个语句,并希望这个函数是一行。
在这种情况下,解释器实际上更容易弄清楚,因为字符串是不可变的。我的猜测可能是解释器可以聪明地避免重新评估。一般来说,如果对象是不可变的,解释器是否足够聪明?