6

谁能告诉我为什么括号在这里加倍?

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

3 回答 3

14

内括号创建一个元组

>>> 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')
于 2012-04-19T22:45:00.353 回答
9

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

于 2012-04-19T22:45:29.590 回答
2

这和说的完全一样:

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

即内部括号首先创建一个元组,然后将元组用作append().

于 2012-04-19T22:46:29.313 回答