2012-04-03 4 views

答えて

13

は、コンマはなく、引数を分離するため、タプルを構築するためのないです。したがって、type(3,)type(3)に相当します。引数リストの末尾に追加のカンマが文法によって許可されています。タプルを作成するには、括弧なしでカンマ区切りの値を使用して

def f (a): 
    print a 
    print type(a) 

>>> f(3,) 
3 
<type 'int'> 

がある:私はPythonは関数の引数の末尾のカンマを無視疑い

>>> def f(x): 
...  print x 
... 
>>> f(3) 
3 
>>> f(3,) 
3 
>>> f((3,)) 
(3,) 
6

組み込みのtype()は関数なので、コンマはタプルのコンストラクタではなく引数の区切りとして解析されます。関数呼び出し演算子を形成括弧内の

>>> type(3,) 
<type 'int'> 

>>> type((3,)) 
<type 'tuple'> 
+1

'f'の引数の数にかかわらず、コンマは引数の区切りとして解析されます。 –

+0

あなたは正しいです - 私はちょうど私の最後にそれを確認しました。編集します。 –

2

:あなたはタプルを構築するために括弧の余分なペアが必要トリックはどこでも動作しません。あなたがこれをしなければならない

>>> [a,a*2 for a in range(4)] 
    File "<stdin>", line 1 
    [a,a*2 for a in range(4)] 
      ^

:リストの内包が良い例です

>>> [(a,a*2) for a in range(4)] 
[(0, 0), (1, 2), (2, 4), (3, 6)] 

リスト・開梱はしかし、正常に動作しますので、それは無制限、カンマ区切り値が許可されているビット変数です:

>>> [(a,b) for a, b in zip(range(4),range(4))] 
[(0, 0), (1, 1), (2, 2), (3, 3)] 
0

func(bunch_of_args)であなただけの

のように、コンマで最後の引数に従うことを許可されています
alist = [1, 2, 3, ] 
関連する問題