Python:双括号做什么?

2024-06-30 16:12:59 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我为什么这里的圆括号是双倍的吗?

self.__items.append((module, item))

Tags: selfitemsitemmoduleappend圆括号
3条回答

也就是说:

parameter = (module, item)
self.__items.append(parameter)

也就是说,内部paren首先创建一个元组,然后元组被用作append()的单个参数。

内括号创建一个tuple

>>> type(('a', 'b'))
<type 'tuple'>

从技术上讲,元组可以在不使用括号的情况下创建:

>>> 'a', 'b'
('a', 'b')

但有时他们需要括号:

>>> 'a', 'b' + 'c', 'd'
('a', 'bc', 'd')
>>> ('a', 'b') + ('c', 'd')
('a', 'b', 'c', 'd')

在您的例子中,它们需要括号来区分元组和函数的逗号分隔参数。例如:

>>> def takes_one_arg(x):
...     return x
... 
>>> takes_one_arg('a', 'b')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: takes_one_arg() takes exactly 1 argument (2 given)
>>> takes_one_arg(('a', 'b'))
('a', 'b')

它将元组(module, item)作为单个参数传递给函数。如果没有额外的paren,它将把moduleitem作为单独的参数传递。

相关问题 更多 >