擅长:python、mysql、java
<p>我认为问题与三元运算符的工作原理有关。当使用三元运算符时,在检查条件之前将对两个表达式求值。在</p>
<pre><code>g = lambda S,b : (g(S[1:],b),S)[len(S)==b]
</code></pre>
<p>因此在本例中,<code>g(S[1:],b)</code>甚至在到达if语句之前就得到了求值。在</p>
<p>如果您有一个函数,那么没有与<code>g(S[1:],b)</code>相同的基本情况</p>
^{pr2}$
<p>S[1:]将到达它为空的点,如果它是空的,它将返回一个空列表。在</p>
<p>关于空列表的一个小例子:</p>
<pre><code>S = [0, 1]
S = S[1:]
# [1]
S = S[1:]
# [] # empty
S = S[1:]
# [] # also empty
</code></pre>