was bedeutet der ", =" Operator?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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)
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.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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:
Antworten