type(3,)
gibt den Typ int, währendTyp (3,) gibt eine Ganzzahl anstelle eines Tupels in Python zurück, warum?
t = 3,
type(t)
das Tupel Typ zurückgibt. Warum?
type(3,)
gibt den Typ int, währendTyp (3,) gibt eine Ganzzahl anstelle eines Tupels in Python zurück, warum?
t = 3,
type(t)
das Tupel Typ zurückgibt. Warum?
in den Klammern, die die Funktion Call-Betreiber bilden, ist das Komma nicht für Tupel Aufbau, sondern auch für Argumente zu trennen. Somit entspricht type(3,)
type(3)
. Ein zusätzliches Komma am Ende der Argumentliste wird von der Grammatik erlaubt. Sie benötigen ein zusätzliches Paar von Pars ein Tupel zu bauen:
>>> def f(x):
... print x
...
>>> f(3)
3
>>> f(3,)
3
>>> f((3,))
(3,)
Das eingebaute type()
ist eine Funktion, daher wird das Komma als Argumententrennzeichen und nicht als Tupelkonstruktor analysiert.
>>> type(3,)
<type 'int'>
>>> type((3,))
<type 'tuple'>
Ich vermute, Python ein Komma in Funktionsargumente ignoriert:
def f (a):
print a
print type(a)
>>> f(3,)
3
<type 'int'>
Mit kommagetrennte Werte ohne Klammern ein Tupel zu erstellen, ist ein Trick, der nicht überall funktioniert. Listenkomprehensionen ist ein gutes Beispiel:
>>> [a,a*2 for a in range(4)]
File "<stdin>", line 1
[a,a*2 for a in range(4)]
^
Sie haben, dies zu tun:
>>> [(a,a*2) for a in range(4)]
[(0, 0), (1, 2), (2, 4), (3, 6)]
Liste auspacken funktioniert gut, aber so ist es ein Bit-Variable, wo unbegrenzt, durch Komma getrennte Werte sind erlaubt:
>>> [(a,b) for a, b in zip(range(4),range(4))]
[(0, 0), (1, 1), (2, 2), (3, 3)]
in func(bunch_of_args)
Sie dürfen das letzte arg mit einem Komma folgen, genau wie in
alist = [1, 2, 3, ]
Unabhängig davon, wie viele Argumente 'f' benötigt werden, wird das Komma als Argumenttrennzeichen analysiert. –
Sie haben Recht - ich habe das nur an meinem Ende verifiziert. Wird bearbeiten. –