Funktionen dynamisch aufrufen

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
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

hallo,

ich möchte gerne funktionen dynamisch aufrufen. im forum hab ich was passendes gefunden, allerdings funktioniert es nicht. welche methoden gibt es dafür, welche sind elegant?
BlackJack

Was heisst dynamisch aufrufen? Python ist eine durch und durch dynamische Programmiersprache, da ist jeder Aufruf dynamisch.

Ich würde mal vermuten Du möchtest Funktionen in ein Dictionary stecken oder mit `getattr()` arbeiten, aber dazu müsstest Du schon ein wenig mehr darüber verraten, was Du wirklich machen möchtest.
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

genau, ich möchte strings sozusagen als funktion ausführen, eben z.b. mit nem dict oder ne liste oder sogar eine extra funktion?
BlackJack

Das verrät immer noch nicht viel mehr. Was hast Du, was willst Du. Möglichst *genau*. Vielleicht mit Beispiel.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

BlackJack hat dir ja schon ein Stichwort geliefert, hier mal ein Beispiel mit getattr:

Code: Alles auswählen

>>> import math
>>> func = getattr(math, "cos")
>>> func(0)
1.0
>>> func = getattr(math, "sin")
>>> func(0)
0.0
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

hab den post gefunden: http://www.python-forum.de/topic-6093.html

das beispiel funktioniert bei mir (py 2.5.1) nicht...
BlackJack

Das im ersten Beitrag funktioniert nicht, das war ja die Frage. Im zweiten Beitrag wird gezeigt, wie es funktioniert.

Falls das immer noch nicht geht, wäre es nett, wenn Du verraten würdest *was* nicht funktioniert. Fehlermeldungen sind dazu da, damit man nicht raten muss wo das Problem liegt. ;-)
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

nunja das ist mein problem, es kommt keine. habe jetzt meine anwendung neu designed, scheint jetzt zu funktionieren:

Code: Alles auswählen

from flup.server.fcgi import WSGIServer

# wsgi applications
def app_home():
	return 'du bist in app_home'

def app_account():
	return 'du bist in app_account'

# wsgi app list
WSGI_APPS = {'/home' : app_home,
	'/account' : app_account
}

# wsgi main code
def wsgi_main(environ, start_response):
	if environ['PATH_INFO'] in WSGI_APPS:
		wsgi_app = WSGI_APPS[environ['PATH_INFO']]()
		status = '200 OK'
		response_headers = [('Content-Type', 'text/html'), ('Connection', 'Keep-Alive')]
		start_response(status, response_headers)
		print environ['PATH_INFO']
		return [wsgi_app]
	else:
		status = '404 Not Found'
		response_headers = [('Content-Type', 'text/html'), ('Connection', 'Close')]
		start_response(status, response_headers)
		print environ['PATH_INFO']
		return ['ERROR: 404 - Not Found']

WSGIServer(wsgi_main, debug=True, bindAddress=('127.0.0.1', 9000)).run()
PS: ich hatte natürlich den code aus dem letzteren beitrag, also der als funktionierend angeben war.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Du willst WSGI nicht direkt, sondern über ein Framework verwenden *Jedi-Handbewegung mach* ;)
Antworten