Was geht noch einfacher?

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.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Mittwoch 30. Mai 2007, 10:08

rolgal_reloaded hat geschrieben:
Zap hat geschrieben:Also das funktioniert so nicht: Wenn kein path angegeben wird ist path default mäßig None und es knallt in der else Bedingung )
Nein, da knallt es nicht. Denn wenn der Pfad nicht angegeben wird, dann wird der Standardpfad, der sich aus der Klassenvariable ergibt verwendet.
So war es gedacht und so hat es bei mir auch funktioniert.
Edit: ups, ok sorry :oops:. Ist wohl nicht mein Tag ;)
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Mittwoch 30. Mai 2007, 15:09

So hier ist sie, müsste alles klappen!


http://www.ubuntuusers.de/paste/11232/


LG

r_r
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 08:47

Hallo,

oben gezeigtes Beispiel hat immer noch das Problem, dass es in den Funktionen Aufrufe von raw_input() gibt. Dadurch müsste man die Funktion für eine GUI erst wieder anpassen. Ich habe mal gedacht, ob folgender Weg ein Lösungsansatz sein könnte. Die Übergabe einer Funktion wie entry.get() einer Mega MiniGUI hat leider nicht funktioniert.
Mit raw_input() schon....

Code: Alles auswählen

>>> def test(funktion):
	    eingabe = funktion
	    return eingabe

>>> test(raw_input())
50
'50'
@edit:

Geht doch auch mit einer GUI, es bleibt allerdings zu fragen, ob das dann eine saubere Lösung ist.
Das müssten jetzt mal die GUI Experten hier sagen.

LG

r_r
BlackJack

Freitag 1. Juni 2007, 10:23

Die `test()`-Funktion verstehe ich nicht so ganz. Die macht ja rein gar nichts. Die gibt einfach nur dass zurück was man ihr übergeben hat. Das lässt sich auch so schreiben:

Code: Alles auswählen

def identity(obj):
    return obj
So eine Identitätsfunktion ist bei funktionaler Programmierung manchmal ganz praktisch, aber hier!?
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 11:16

@BlackJack

Na ich dachte: anstatt raw_input() z. Bsp. in die Funktion edit() bzw. bearbeiten() zu schreiben, muss ihr die Funktion mit der die Datein eingegeben werden oder bei einer GUI ausgelesen werden übergeben werden. Bei test() fehlt natürlich alles was dann mit den eingegebenen Daten weiter passiert.

Klar was ich meine?

LG

r_r
BlackJack

Freitag 1. Juni 2007, 11:36

Halbwegs. In Deinem Beispiel `test()` hättest Du dann aber wirklich die Funktion übergeben sollen und nicht das Ergebnis des Aufrufs, und die Funktion dann in der `test()` aufrufen müssen. So ist das Argument `funktion` an eine Zeichenkette gebunden.

Code: Alles auswählen

def von_gui_unabhaengige_funktion_die_eingabe_erwartet(input_func):
    eingabe = input_func()
    # Mach etwas mit `eingabe`...
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 11:39

BlackJack hat geschrieben:Halbwegs. In Deinem Beispiel `test()` hättest Du dann aber wirklich die Funktion übergeben sollen und nicht das Ergebnis des Aufrufs, und die Funktion dann in der `test()` aufrufen müssen. So ist das Argument `funktion` an eine Zeichenkette gebunden.

Code: Alles auswählen

def von_gui_unabhaengige_funktion_die_eingabe_erwartet(input_func):
    eingabe = input_func()
    # Mach etwas mit `eingabe`...
Wieso, ich hätte auch input() übergeben können. Reden wir jetzt aneinander vorbei?

LG

r_r
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Freitag 1. Juni 2007, 11:46

Hallo,

@rolgal_reloaded
kannst du bitte ein beispiel zeigen, wie du die Gui dazu implementiert hast.
( oder gibt es noch keine Gui? )

Gruss
pyStyler
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 11:52

pyStyler hat geschrieben:Hallo,

@rolgal_reloaded
kannst du bitte ein beispiel zeigen, wie du die Gui dazu implementiert hast.
( oder gibt es noch keine Gui? )

Gruss
pyStyler
Hallo pyStyler, es gibt nicht wirklich eine Gui dazu, ich habe lediglich ein Tkinterfenster gemacht, ein Eingabefeld, einen Button und von dem aus versucht test(entry.get()) aufzurufen. Hat auch "funktioniert" Allerdings hat mir Idle den Wert nur mit print statt mit return ausgegeben.
Ich wollte nur mal probieren, ob das vom Ansatz her brauchbar ist, um es weiter zu entwicklen.

LG

r_r
BlackJack

Freitag 1. Juni 2007, 12:33

rolgal_reloaded hat geschrieben:
BlackJack hat geschrieben:Halbwegs. In Deinem Beispiel `test()` hättest Du dann aber wirklich die Funktion übergeben sollen und nicht das Ergebnis des Aufrufs, und die Funktion dann in der `test()` aufrufen müssen. So ist das Argument `funktion` an eine Zeichenkette gebunden.

Code: Alles auswählen

def von_gui_unabhaengige_funktion_die_eingabe_erwartet(input_func):
    eingabe = input_func()
    # Mach etwas mit `eingabe`...
Wieso, ich hätte auch input() übergeben können. Reden wir jetzt aneinander vorbei?
Dann ganz offensichtlich ja. Dann verstehe ich nämlich nicht was Deine `test()` Funktion soll, die ja wirklich *gar nichts* tut. Und die in deinem Beispiel *keine Funktion* übergeben bekommt, obwohl das Argument in der Signatur so heisst. Ich hätte erwartet, dass man ihr wahlweise `raw_input` oder `entry.get` übergeben könnte. Oder eben irgendeine andere Funktion oder Methode von der `test()` sich dann eine Benutzereingabe abholen kann.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 12:41

@BlackJack:

keine Ahnung wie man deine Funktion aufruft??
So wohl nicht:

Code: Alles auswählen

>>> def von_gui_unabhaengige_funktion_die_eingabe_erwartet(input_func):
	    eingabe = input_func()

	    
>>> von_gui_unabhaengige_funktion_die_eingabe_erwartet(raw_input())
50

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    von_gui_unabhaengige_funktion_die_eingabe_erwartet(raw_input())
  File "<pyshell#6>", line 2, in von_gui_unabhaengige_funktion_die_eingabe_erwartet
    eingabe = input_func()
TypeError: 'str' object is not callable
>>> 
Bei meiner hingegen kann ich raw_input() übergeben, muss dann was eingeben und bekomm es zurück, und entry.get() geht auch, lediglich bekomm ich den Wert in Idle nur über print ausgegeben.

Wieso ist meine falsch, obwohl sie funktioniert. Wieso ist deine richtig und wie ist sie aufzurufen???

Ich versteh momentan nur bahnhof???

LG

r_r
BlackJack

Freitag 1. Juni 2007, 12:59

Meine Funktion ruft man mit einer *Funktion* als Argument auf. Nicht wie Du es getan hast mit einer *Zeichenkette*. Und ich dachte das sollte so sein, weil das Argument bei Dir *funktion* hiess.

Ich weiss aber immer noch nicht, was die `test()`-Funktion überhaupt bezwecken soll. Ich kann nicht sagen ob sie falsch ist, aber sie tut *nichts*, somit ist sie überflüssig. Wo ist bei Deiner Funktion der Unterschied zwischen ``print test(raw_input())`` und ``print raw_input()``!?
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 13:15

@BlackJack,

willst mich foppen:-)



Was tut meine Funktion nicht?
Sie führt die Funktion aus die übergeben wurde. Definitiv oder bin ich im falschen Film?

Code: Alles auswählen

>>> def test(input_func):
	eingabe = input_func()
	return eingabe

>>> test(input)
50
50
>>> test(raw_input)
50
'50'
>>> def test(input_func):
	eingabe = input_func
	return eingabe # .... oder dann: liste.append(eingabe) oder was auch immer

>>> test(input())
50
50
>>> test(raw_input())
50
'50'
Ich weiss echt nicht was du meinst!
BlackJack

Freitag 1. Juni 2007, 13:28

Wer will hier wen foppen? *Deine* erste Funktion hat die Funktion definitiv nicht ausgeführt sondern einfach nur einem anderen lokalen Namen zugewiesen. Du hast dann beim Test eine Zeichenkette übergeben und keine Funktion.

*Meine* Funktion hat ihr Argument aufgerufen, das hat bei Deinem Aufruf nicht funktioniert, weil Du wieder eine Zeichenkette übergeben hast, statt einer Funktion.

Deine Funktion tut/tat *gar nichts sinnvolles*, genau wie die zweite `test()`-Funktion in Deinem letzten Beitrag. Und selbst wenn sie etwas tun würde, wie im Kommentar angedeutet, ist der Name für das Argument falsch -- die Funktion erwartet keine Funktion sondern eine Eingabe. Es sei denn sie soll wie im Kommentar angedeutet, tatsächlich eine Liste mit *Funktionen* füllen.

Womit wir wieder bei der Frage wären: Was soll diese `test()`-Funktion denn nun überhaupt mit was für einer Eingabe und warum tun?

Den Unterschied zwischen einer Funktion als "first class"-Objekt und einem Funktionsaufruf scheinst Du verstanden zu haben, wie die Gegenüberstellung der beiden `test()`\s im letzten Beitrag zeigt. Dann verstehe ich aber nicht warum Du nicht wusstest wie man meine Funktion aufruft, oder warum bei Deiner das Argument `funktion` heisst, Du aber Zeichenketten übergibst!?
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Freitag 1. Juni 2007, 13:51

Hallo BlackJack,

ich will dich nicht foppen, ich habe entweder den Ausstieg des Jahres oder sonst was.....
Aber so wars gemeint:

Code: Alles auswählen

>>> def test(input_func):
	    eingabe = input_func()
	    print eingabe

	
>>> test(raw_input)
50
50
>>> from Tkinter import *
>>> fenster = Tk()
>>> entry = Entry(fenster)
>>> entry.pack()
>>> button = Button(fenster, text = "Gib BJ den Wert:-))", command = lambda:test(entry.get))
>>> button.pack() # in Entry was eingeben, Button drücken, test gibt die Eingabe zurück oder macht sonst was sinnvolles
>>> 50
@edit: Finde es schön, dass du glaubst ich habe was verstanden, ich habe momentan das Gefühl ich versteh gar nichts:
raw_input() ist keine Funktion?

Ist es nicht egal, ob dem lokalen Namen eingabe raw_input() oder raw_input übergeben wird. Man muss ja nur den Funktionskörper entsprechend abändern und es tut beidesmal das gleiche.
Ich kann keinen Unterschied feststellen, so oder so wartet der Interpreter auf eine Eingabe.
Im Beispiel oben liest test dann allerdings ein Eingabefeld einer GUI aus.

LG

rolgal_verwirrt
Antworten