擅长:python、mysql、java
<p>与流行的观点相反,创建元组不需要括号:</p>
<pre><code>>>> x = 1,
>>> type(x)
<type 'tuple'>
</code></pre>
<p>唯一需要圆括号的时候是消除元组构造逗号和其他逗号用法之间的歧义。例如,逗号也用来分隔函数的参数,在这样的参数列表中,后面的逗号是可选的,所以</p>
<pre><code>>>> type(1,) # Equivalent to type(1)
<type 'int'>
</code></pre>
<p>但是</p>
<pre><code>>>> type((1,)) # or type((1,),)
<type 'tuple'>
</code></pre>
<p>至于第二个问题,不要使用可变的默认参数。相反,显式地传递必要的列表,这样经过修改的默认参数就不会干扰对<code>gen_par</code>的其他调用。你知道吗</p>
<pre><code>def gen_par(p, left, right, parens):
if left:
parens = gen_par(p + '(', left - 1, right, parens)
if right > left:
parens = gen_par(p + ')', left, right - 1, parens)
if not right:
parens += p,
return parens
print(gen_par('', 2, 2, []))
</code></pre>