Seite 1 von 1
funktion ohne Klammer übergeben
Verfasst: Freitag 8. Januar 2010, 11:27
von kostonstyle
Hallo miteinander
ich habe eine Frage zu Funktion in Python. Wenn ich normal in Python eine Funktion ausführe, dann ist die schreibeweise so func1().
aber in django kann man in der url.py funktion übergeben ohne klammer, wie ist das möglich, dass es nachher als funktion intepretiert wird?
Code: Alles auswählen
urlpatterns = patterns('',
# ...
(r'^test/$', testview),
# ...
)
Danke kostonstyle
Verfasst: Freitag 8. Januar 2010, 11:43
von Klip
Die Funktion wird so nicht ausgeführt, sondern übergeben.
Code: Alles auswählen
>>> def hallo():
... print "hallo"
...
>>> def tu_was(func):
... func()
...
>>> tu_was(hallo)
hallo
Verfasst: Freitag 8. Januar 2010, 11:50
von jbs
meinst du properties?
Verfasst: Freitag 8. Januar 2010, 11:51
von mkesper
Du kannst in Python Funktionen (und Klassen) an einen Namen binden, z.B.
Teste mal im Interpreter, was jetzt bei Eingabe von
und von
passiert.
Verfasst: Freitag 8. Januar 2010, 13:45
von kostonstyle
super, habe nie das so etwas möglich ist. vielen dank leute
Verfasst: Freitag 8. Januar 2010, 14:50
von Leonidas
kostonstyle hat geschrieben:super, habe nie das so etwas möglich ist.
Funktionen sind eben auch nur Werte und können genauso übergeben werden.
Verfasst: Freitag 8. Januar 2010, 15:28
von mkesper
Wobei ich das noch nicht ganz verstehe (iPython, 2.6.4):
Code: Alles auswählen
In [1]: def foo():
...: print "Funktion ausgeführt!"
In [2]: baz = foo
In [3]: baz = foo()
Funktion ausgeführt!
In [4]: baz
In [5]: baz()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
U:\<ipython console> in <module>()
TypeError: 'NoneType' object is not callable
Verfasst: Freitag 8. Januar 2010, 15:31
von numerix
mkesper hat geschrieben:Wobei ich das noch nicht ganz verstehe (iPython, 2.6.4):
Ist nicht dein Ernst, oder? -> Zeile 6!
Verfasst: Freitag 8. Januar 2010, 15:54
von Leonidas
Schau dir mal den Rückgabewert von ``foo()`` an, was ist der? Und was passiert wenn man den an ``baz`` bindet und versucht aufzurufen?
Ich glaub du hast einfach nen schlechten Tag. Passiert mir auch manchmal

Verfasst: Montag 11. Januar 2010, 09:12
von mkesper
Leonidas hat geschrieben:Ich glaub du hast einfach nen schlechten Tag. Passiert mir auch manchmal

Tomato-Day.
