5

type(3,)int 型を返します。

t = 3,
type(t)

タプルの型を返します。なんで?

4

4 に答える 4

13

関数呼び出し演算子を形成する括弧内のコンマは、タプルを構築するためではなく、引数を区切るためのものです。したがって、type(3, )と同等type(3)です。文法では、引数リストの最後に追加のコンマを使用できます。タプルを構築するには、追加のかっこのペアが必要です。

>>> def f(x):
...     print x
... 
>>> f(3)
3
>>> f(3,)
3
>>> f((3,))
(3,)
于 2012-04-03T21:43:27.720 に答える
6

ビルトインtype()は関数であるため、コンマはタプルコンストラクターではなく引数セパレーターとして解析されています。

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

>>> type((3,))
<type 'tuple'>
于 2012-04-03T21:42:08.750 に答える
2

Python は関数の引数の末尾のコンマを無視すると思われます。

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

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

括弧なしでコンマ区切りの値を使用してタプルを作成する方法は、どこでも機能するとは限りません。リスト内包表記は良い例です:

>>> [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)]
于 2012-04-03T21:49:38.507 に答える
0

のようにfunc(bunch_of_args)、最後の引数の後にカンマを続けることができます

alist = [1, 2, 3, ]
于 2012-04-03T21:50:00.650 に答える