Seite 1 von 1
Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 14. April 2016, 20:17
von fragezeichen123
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...
Danke im Voraus für Eure Hilfe!

Re: Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 14. April 2016, 20:32
von 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?
Re: Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 14. April 2016, 21:24
von 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“.
Re: Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 28. April 2016, 20:03
von ProgrammierLord
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!
Re: Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 28. April 2016, 20:11
von nezzcarth
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.)
Re: Funktion/Wert aus Definition benutzen
Verfasst: Donnerstag 28. April 2016, 20:16
von ProgrammierLord
@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!
Re: Funktion/Wert aus Definition benutzen
Verfasst: Freitag 29. April 2016, 08:12
von /me
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)