Seite 1 von 1

was bedeutet der ", =" Operator?

Verfasst: Montag 4. August 2014, 08:52
von Papp Nase
Hi, in einem Programmbeispiel fand ich das hier:

Code: Alles auswählen

def run(data):
    # update the data
    t,y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)

    return line,
(Quelle: http://matplotlib.org/1.3.0/examples/an ... decay.html)

Dort steht

Code: Alles auswählen

return line,
Warum schreibt man hinter das line ein Komma?

Hier noch so ein Zuweisungsbeispiel mit Komma:

Code: Alles auswählen

line, = ax.plot([], [], lw=2)
Über einen Tipp würde ich mich freuen.

Re: was bedeutet der ", =" Operator?

Verfasst: Montag 4. August 2014, 09:10
von cofi
Diesen Operator gibt es nicht. Das Stichwort lautet "tuple unpacking" https://docs.python.org/2/tutorial/data ... -sequences

Und zumindest dein letztes Beispiel ist nicht lauffaehig.

Code: Alles auswählen

In [1]: a, b = 1, 2

In [2]: c, = 3,4
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-575972309de8> in <module>()
----> 1 c, = 3,4

ValueError: too many values to unpack

In [3]: c, _ = 3,4

In [4]: a, b, c, _
Out[4]: (1, 2, 3, 4)

Re: was bedeutet der ", =" Operator?

Verfasst: Montag 4. August 2014, 09:12
von BlackJack
@cofi: Das letzte Beispiel ist lauffähig wenn der `plot()`-Aufruf eine Sequenz (oder allgemein ein iterierbares Objekt) mit genau einem Element zurückgibt.

Re: was bedeutet der ", =" Operator?

Verfasst: Montag 4. August 2014, 09:13
von pillmuncher
Das Komma dient zur Konstruktion von Tupeln:

Code: Alles auswählen

>>> x = 1, 2, 3
>>> x
(1, 2, 3)
Dazu gibt es das sog. Tuple-Unpacking:

Code: Alles auswählen

>>> a, b, c = x
>>> a
1
>>> b
2
>>> c
3
Um Tupel mit nur einem Element zu konstruieren benutzt man ein nachgestelltes Komma:

Code: Alles auswählen

>>> x = 1,
>>> x
(1,)
Analog dazu beim Tuple-Unpacking:

Code: Alles auswählen

>>> y, = x
>>> y
1

Re: was bedeutet der ", =" Operator?

Verfasst: Montag 4. August 2014, 10:54
von cofi
BlackJack hat geschrieben:@cofi: Das letzte Beispiel ist lauffähig wenn der `plot()`-Aufruf eine Sequenz (oder allgemein ein iterierbares Objekt) mit genau einem Element zurückgibt.
Ah, danke schoen. Da habe ich nicht genau genug in den Code gesehen :oops: