为什么元组括在括号中?

时间:2016-02-06 12:38:58

标签: python

  

元组是以逗号分隔的值列表

因此声明元组的有效语法是:

tup = 'a', 'b', 'c', 'd'

但我经常看到的是这样的声明:

tup = ('a', 'b', 'c', 'd')

用括号括起元组有什么好处?

3 个答案:

答案 0 :(得分:10)

来自Python docs

  

...以便正确解释嵌套元组。元组可能是   输入有或没有周围的括号,虽然经常   无论如何,括号是必要的(如果元组是较大的一部分   表达)。

嵌套元组示例:

tuple = ('a', ('b', 'c'), 'd')

答案 1 :(得分:4)

括号只是括号 - 它们通过改变优先级来工作。唯一的例外是如果没有任何内容(即()),在这种情况下它将生成一个空元组。

然而,人们使用括号的原因是它会产生相当一致的符号。你可以用这种方式编写空元组和任何其他元组。

另一个原因是人们通常希望文字比其他操作具有更高的优先级。例如,添加两个元组将被写为(1,2)+(3,4)(如果省略括号,则获得1,2+3,4,这意味着首先添加2和3然后形成元组 - 结果为1,5,4)。类似的情况是当你想要将一个元组传递给一个函数时f(1,2)意味着发送参数1和2,而f((1,2))意味着发送元组(1,2)。还有一种情况是,如果你想在元组((1,2),(3,4)中包含一个元组,(1,2,3,4)是两个不同的东西。

答案 2 :(得分:1)

这些都是很好的答案!这里只是一个有效的元组(打包/解包)的另一个例子:

如果你这样做

x, y = y, x

发生的事情是:

tuple_1 = (y, x)
(x, y) = tuple_1

与:

相同
tuple_1 = (y, x)
x = tuple_1[0]
y = tuple_1[1]

在所有这些情况中,括号根本不对python 做任何事情。但如果你想对阅读剧本的人说“嘿嘿!我在这里做一个元组!如果你没有看到逗号,我会添加这些括号来引起你的注意!” “

当然关于嵌套元组的答案是正确的。如果你想把一个元组放在像元组或列表这样的东西中......

A = x, (x, y)   # same as (x, (x, y))
B = [x, (x, y)]