-1

単一の引数で Python パラメーター リストをテストすると、print.

>>> def hi(*x):
...     print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)

の結果で最後のコンマが何を意味するのか、誰か説明してもらえますかhi(1)(つまり(1,)

4

1 に答える 1

2

実際には、その動作はほんの少し「奇妙」です。:-)

パラメータxの前に星印が付いています。これは、関数に渡すすべての引数が単一のタプルに「ロールアップ」され、xそのタプルになることを意味します。

(1,)は、Python が 1 つの値のタプルを書き込む方法であり、数値 1 と対比し(1)ます。

より一般的なケースを次に示します。

def f(x, *y):
    return "x is {} and y is {}".format(x, y)

ここにいくつかの実行があります:

>>> f(1)
'x is 1 and y is ()'
>>> f(1, 2)
'x is 1 and y is (2,)'   
>>> f(1, 2, 3)
'x is 1 and y is (2, 3)'
>>> f(1, 2, 3, 4)
'x is 1 and y is (2, 3, 4)'

x最初の引数が に移動し、後続のすべての引数が tuple にパックされることに注意してくださいy(1)Python が 0 または 1 のコンポーネントを持つタプルを表現する方法が少し奇妙であることに気付いたかもしれませんが、それが数値である必要があり、単一要素のタプルを表現する何らかの方法が必要であることに気付くと、それは理にかなっています。Python は慣例として末尾のコンマを使用するだけです。

于 2016-11-20T22:36:19.180 に答える