2012-04-19 64 views

答えて

7

それは1つの引数として関数にタプル(module, item)を渡しています。余分な括弧がないと、別の引数としてmoduleitemが渡されます。

+1

これまでに提供されたすべての回答は、OPに役立つはずです。私はタプルの作成に関するパンダのアラームを設定していないので、個人的にはこの1つが最高です。よくやった! –

+2

@タフルを作成していることを知っていた@JohnYの人々は、明らかに質問に出てこないでしょう。 –

+0

@ハイ・エンジェル:私のコメントを理解したとは思わない。私が言及していた "パンダ警報"は、 "タプルは括弧ではなくコンマで作成されている"ということです。タプルのパンツはこの点に注意を払うのが大好きで、あらゆる機会にそうするようです。もちろん、それは本当の意味です。しかし、私にとって、それはあまりにも技術的で、特に初心者の説明として。この答えについて私が好きなのは、この点を強調しない*という形で表現されているということです。 –

11

内側の括弧は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') 
+0

ああ、ありがたいです。 :) – BrianFreud

2

言うとまったく同じです:

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

すなわち、タプルがappend()の単一の引数として使用される前に、内側の括弧が最初にタプルを作成しています。

+0

あなたの例でタプルの周りに括弧を必要としないことを除いて... parameter = module、itemは問題ありません。 – ch3ka

関連する問題