Einstellungen in Datei speichern & importieren

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.
heiliga horsd

Danke dir!

Also wenn ich bspw.

Code: Alles auswählen

def blabla:
    [...]
    return Dezimalzahl
    [...]
habe, kann ich mit

Code: Alles auswählen

def lalala:
    [...]
    Dezimalzahl = blabla()
    [...]
darauf zugreifen?

Muss ich dann irgendwas beachten, wenn ich zwei Werte zurück gebe und bloß einen verwende oder ist das egal?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du kannst mehrere Werte zurückgeben, ja. Du erhältst dann ein Tupel zurück.

Code: Alles auswählen

def foo():
    return True, None, 4, "Hallo"
Du solltest Dir dringend mal das Tutorial angucken. Das sind absolute Grundlagen und ohne diese kann Deine Projektstruktur nicht gut sein! (Du verwendest doch Funktionen - da sollte man so etwas banales doch wissen)
heiliga horsd

Ich weiß schon, dass ich mehrere Werte zurück geben kann (und auch wie). Ich wollte lediglich wissen, was passiert, wenn ich mehr Werte zurück gebe, als ich dann eigentlich brauche.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

heiliga horsd hat geschrieben:Ich weiß schon, dass ich mehrere Werte zurück geben kann (und auch wie). Ich wollte lediglich wissen, was passiert, wenn ich mehr Werte zurück gebe, als ich dann eigentlich brauche.
Dann hättest Du das auch schreiben sollen ;-)

"Versuch macht kluch"

Code: Alles auswählen

In [1]: def foo():
   ...:     return 1, True, None, "Hallo"
   ...:

In [2]: foo()
Out[2]: (1, True, None, 'Hallo')

In [3]: d = foo()

In [4]: d[0]
Out[4]: 1

In [5]: d[3]
Out[5]: 'Hallo'

In [6]: a, b, c = foo()
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

C:\Dokumente und Einstellungen\nelson\Eigene Dateien\<ipython console> in <modul
e>()

ValueError: too many values to unpack
Wie Du siehst ist es solange egal, wie Du das Tupel nicht wieder zerlegen und an einzelne Namen binden willst. Dann muss die Anzahl natürlich exakt stimmen.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo,

um nochmal eine manchmal verwirrende Eigenheit zu erläutern, auch wenn es nicht 1 zu 1 auf Dein Beispiel zutrifft:

Code: Alles auswählen

>>> i = 5
>>> def out():
...   print i
...   i = 3
...
>>> out()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in out
UnboundLocalError: local variable 'i' referenced before assignment
Im Beispiel ist der Name i global an das Integerobjekt 5 gebunden.
Theoretisch kannst Du das Objekt innerhalb der Funktion referenzieren. ABER: wenn Du im weiteren Verlauf der Funktion den Namen neu bindest, wie in diesem Fall an das Integerobjekt der 3, dann gilt der Name (quasi rückwirkend) als lokal. Daher ist der Zugriff wie oben dargestellt nicht möglich. Lösung wäre eine Definition als 'global i' (unschön) oder die Übergabe als Funktionsparameter von außen (sauber).

Ich hoffe, das war verständlich. :-)

Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
heiliga horsd

Ja, war es. Ich werde mich wahrscheinlich morgen nochmal dran setzen und wieder ein wenig herum tüfteln. Falls wieder Fragen aufkommen melde ich mich.

Bis dahin Danke an alle!
Antworten