元组是以逗号分隔的值列表
因此声明元组的有效语法是:
tup = 'a', 'b', 'c', 'd'
但我经常看到的是这样的声明:
tup = ('a', 'b', 'c', 'd')
用括号括起元组有什么好处?
答案 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)]