【发布时间】:2012-05-01 13:08:28
【问题描述】:
谁能告诉我为什么括号在这里加倍?
self.__items.append((module, item))
【问题讨论】:
标签: python syntax parentheses
谁能告诉我为什么括号在这里加倍?
self.__items.append((module, item))
【问题讨论】:
标签: python syntax parentheses
内括号创建一个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) 作为单个参数传递给函数。如果没有额外的括号,它将传递 module 和 item 作为单独的参数。
【讨论】:
这和说的完全一样:
parameter = (module, item)
self.__items.append(parameter)
即在将元组用作append() 的单个参数之前,内部括号首先创建一个元组。
【讨论】: