Funktion/Wert aus Definition benutzen

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
fragezeichen123
User
Beiträge: 18
Registriert: Donnerstag 7. April 2016, 19:32

Hallo Leute,

ich habe gerade in Python eine Funktion definiert:

Code: Alles auswählen

def Ball():
     zahl1X = randint(50, 1250)            ### wird später gebraucht
     zahl1Y = randint(50, 650)              ### wird später gebraucht
     Radiusball1 = 20
     ball1 = Circle(Point(zahl1X, zahl1Y),Radiusball1)
     ball1.setFill('red')
     ball1.setOutline('black')
     ball1.draw(myWindow)
 
Ball()

Mein Problem ist jetzt jedoch, dass ich zwei "Werte" in dieser Definition noch für eine spätere Rechnung brauche... nämlich die 'zahl1x' und die 'zahl1y'... aber wie kann ich diese Werte jetzt aus dieser Definition wieder "rausholen"? Ich möchte nämlich, dass die Definition weiterhin erhalten bleibt.
Warscheinlich ist das alles total einfach... aber ich bin noch Einsteiger und kenne mich daher noch nicht so aus... :oops:

Danke im Voraus für Eure Hilfe! :D
Zuletzt geändert von Anonymous am Donnerstag 14. April 2016, 20:20, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
BlackJack

@fragezeichen123: Funktionen können Rückgabewerte haben. ”Echte” Funktionen müssen die sogar haben, sonst sind es eher Prozeduren oder ”Funktionen” die man wegen des Effekts aufruft und nicht wegen des Ergebnis.

`Ball` ist kein guter Name für eine Funktion. Funktionen tun etwas und werden deshalb üblicherweise nach Tätigkeiten benannt. Auch um sie von eher ”passiven” Werten leichter unterscheiden zu können. Zudem ist die Schreibweise mit einem Grossbuchstaben am Anfang per Konvention für Klassen vorbehalten. Du solltest Funktionsnamen und andere Werte die keine Klassen sind, also mit Kleinbuchstaben anfangen lassen. Und falls der Name aus mehreren Worten besteht, werden die durch Unterstriche getrennt. Also beispielsweise `create_ball()`. Der Style Guide for Python Code hat mehr Informationen dazu.

Die 1 die Du innerhalb der Funktion an einige Namen gehängt hast, macht dort keinen Sinn. Weg damit. Genauso die Vorsible `my`. Das sollte einfach `window` heissen. Und der Wert sollte nicht einfach so verwendet werden. Man sieht ja gar nicht wo der her kommt. Werte die in Funktionen und Methoden verwendet werden, sollten als Argumente übergeben werden. Auf Modulebene gehören nur Definitionen von Konstanten, Funktionen, und Klassen. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Dann kann kommt man auch gar nicht erst in Versuchung einfach so einen Wert aus der Umgebung zu verwenden.

Statt der beiden Zahlen würde es vielleicht mehr Sinn machen das `Circle`-Objekt zurück zu geben. Oder mindestens das `Point`-Objekt. Noch sinnvoller wäre aber wahrscheinlich eine eigene Klasse die so ein `Point`- oder `Circle`-Objekt kaspelt.

Welches Rahmenwerk wird da eigentlich für die Darstellung verwendet?
BlackJack

Falls es sich um dieses `graphics`-Modul handelt: http://mcsp.wartburg.edu/zelle/python/ dann möchtest Du das `Circle`-Objekt zurückgeben. Das hat eine `getCenter()`-Methode die ein `Point`-Exemplar liefert welches die Koordinaten des Mittelpunkts kodiert und den Radius kann man mit `getRadius()` abfragen. Die API ist nicht wirklich „pythonisch“.
ProgrammierLord
User
Beiträge: 13
Registriert: Mittwoch 20. April 2016, 19:24

Hallo!

Ich habe gerade das selbe Problem! Ich habe zwei verschiedene Definitionen, jedoch brauche ich jetzt in der einen Definition einen Wert aus der anderen Definition... hier ein kleines Beispiel wie ich das meine:

def x():
b=1
c=2
a = b + c

def y():
### an dieser Stelle bräuchte ich jetzt die Variable a!

Danke für Eure Hilfe!
METAL LEUTE... BIN IMMER DANKBAR FÜR EURE HILFE
MIT FREUNDLICHEM GRUß
DIE LORDSCHAFT
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

ProgrammierLord hat geschrieben:Hallo!

Ich habe gerade das selbe Problem! Ich habe zwei verschiedene Definitionen, jedoch brauche ich jetzt in der einen Definition einen Wert aus der anderen Definition... hier ein kleines Beispiel wie ich das meine:

def x():
b=1
c=2
a = b + c

def y():
### an dieser Stelle bräuchte ich jetzt die Variable a!

Danke für Eure Hilfe!
Funktionen haben im allgemeinen Rückgabewerte und Parameter. Du gibst in der Funktion 'x' das Ergebnis von b+c zurück und übergibst es als Parameter an y.

(x und y sind übrigens keine guten Funktionsnamen. Etwas sprechendes wäre besser.)
ProgrammierLord
User
Beiträge: 13
Registriert: Mittwoch 20. April 2016, 19:24

@nezzcarth: Danke, aber könntest du das vielleicht am Beispiel einmal verdeutlichen? Die Funktionsnamen habe ich jetzt einfach x und y gennant, weil das ja nur ein Beispiel sein soll.

Sehe gerade auch, dass das nicht richtig angezeigt wurde... hier nochmal richtig:

Code: Alles auswählen

def x():
   b=1
   c=2 
   a = b + c

def y():
   ### an dieser Stelle bräuchte ich jetzt die Variable a!
METAL LEUTE... BIN IMMER DANKBAR FÜR EURE HILFE
MIT FREUNDLICHEM GRUß
DIE LORDSCHAFT
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Vielleicht solltest du noch mal einen Blick ins Tutorial werfen.

Code: Alles auswählen

def get_value():
    x = 3
    y = 4
    return (x ** 2 + y ** 2) ** 0.5

def main():
    a = get_value()
    print(a)
Flexibler ist es natürlich, wenn man auch noch Parameter verwendet.

Code: Alles auswählen

def get_value(x, y):
    return (x ** 2 + y ** 2) ** 0.5

def main():
    a = get_value(3, 4)
    print(a)
Antworten