<p>tuple()是唯一真正的空元组,但是()和((),)创建的长度为1的元组包含长度为0的元组,而不是长度为0的元组本身。</p>
<p>如果您想知道“如何创建<em>空</em>(或零长度)元组…”。。。。我在这篇文章中搜索了“如何创建一个空元组”,然后意识到这不是同一个问题,但可能会被误认为是那个问题(就像搜索一样),所以我想我会提供答案:</p>
<p><strong>如何简单地创建一个空元组?</strong></p>
<p>原来的问题可能会误导你,因为原来的答案几乎可以作为一个空元组,但一定要通过一次测试。</p>
<p><code>(),</code>将创建一个“empty”元组,如前面的答案中所建议的((,))也可以,正如((((((((((((((((((,))))))一样。事实上,您可以使用任意数量的外括号,它们只是用作括号。但是,python在打印元组时确实添加了一组外括号。</p>
<p>空括号是“no value”的非标准表示形式,添加尾随逗号将从“no value”生成元组。但它是一个具有“无值”项的元组,而不是空元组。</p>
<p>注意:这不是一个长度为零的元组,正如其他例子所示。外部元组是一个只有一个值的元组,这个值本身就是空元组。因此,这会在另一个元组中创建一个空元组<em>,而另一个元组是<em>not</em>empty。对于一个真正的空元组本身,使用<code>tuple()</code>尽管()的行为有些相似,但并不完全正确。</p>
<pre><code>>>> a = (),
>>> type(a)
<class 'tuple'>
>>> len(a)
1
>>> a
((),)
>>> len(a[0]) # the inside tuple is empty, just not the outside one
0
</code></pre>
<p>类似地,对于长度为1但具有值的元组(对于b为零,对于c为“”)</p>
<pre><code>>>> b = 0,
>>> type(b)
<class 'tuple'>
>>> len(b)
1
>>>b
(0,)
# now with an empty string
>>> c = "",
>>> type(c)
<class 'tuple'>
>>> len(c)
1
>>>c
('',)
>>> len (c[0]) # same len of c[0] as with 'empty' tuple
0
</code></pre>
<p>因此,外部括号用于显示元组,但实际上不是元组的一部分,也不用于创建元组。</p>
<p>然而,所有这些括号方法在外部并不是真正的空方法,这也是有用例的。</p>
<pre><code>>>> a = ((),) # extra brackets just to show same as other answers
>>> len(a)
1
>>> if a:
print("not empty")
not empty
>>> e = tuple()
>>> len(e)
0
>>> type(e)
<class 'tuple'>
>>> if e:
print("not empty")
>>> # note...did not print...so e acts as false as an empty tuple should
</code></pre>
<p>因此,如果您真的需要一个真正的空元组,请使用<code>tuple()</code>,但如果您所需要的足够接近,则可以使用<code>(),</code>或<code>((),)</code></p>