擅长:python、mysql、java
<p>问题的第一部分已经回答了逗号是什么创建元组,而不是括号。关于警告,请看我的一个问题:<a href="https://stackoverflow.com/questions/48220279/why-do-tuples-need-parantheses-in-list-comprehension">Why do tuples need parantheses in list comprehension</a></p>
<p>问题的第二部分非常简单:在第二段代码中,您将<code>parens</code>视为局部变量,该变量在每次迭代中都会重置,函数在最后返回一个空列表。可以将其视为全局变量,以获得与第一个代码等效的结果,如下所示:</p>
<pre><code>parens = []
def gen_par(p, left, right):
global parens
if left:
gen_par(p + '(', left - 1, right)
if right > left:
gen_par(p + ')', left, right - 1)
if not right:
parens += p,
return parens
print(gen_par('', 2, 2))
# Returns ['(())', '()()'] correctly.
</code></pre>