Eigentlich ist das Verhalten nur ein wenig‚seltsam.‘ :-)
Ihr Parameter x
ist mit einem Stern vorangestellt, was bedeutet, dass alle Argumente, die Sie an die Funktion übergeben, in ein einzelnes Tupel "aufgerollt" werden, und x
wird das Tupel sein.
Der Wert (1,)
ist die Art und Weise Python ein Tupel von einem Wert schreibt, es mit (1)
zu kontrastieren, die die Nummer 1.
Hier allgemeinen Fall ist ein mehr sein würde:
def f(x, *y):
return "x is {} and y is {}".format(x, y)
Hier sind einige Läufe:
>>> 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)'
Beachten Sie, wie das erste Argument in t werden x
und alle nachfolgenden Argumente verpackt geht er tuple y
. Vielleicht haben Sie die Art und Weise gefunden, wie Python Tupel mit 0 oder 1 Komponenten ein wenig seltsam darstellt, aber es macht Sinn, wenn Sie erkennen, dass (1)
eine Zahl sein muss und es daher eine Möglichkeit geben muss, ein Ein-Element-Tupel darzustellen. Python verwendet nur das abschließende Komma als Konvention, das ist alles.
Es bedeutet, dass der gedruckte Wert ein Tupel mit einem einzelnen Element darin ist. – Rockybilly