Modulübergreifende Funktionsaufrufe

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.
PyRock
User
Beiträge: 2
Registriert: Dienstag 11. Dezember 2007, 21:04

Modulübergreifende Funktionsaufrufe

Beitragvon PyRock » Mittwoch 12. Dezember 2007, 20:37

Hallo, ich möchte ein Modul (B) schreiben, welches eine Funktion zur Verfügung stellt, die wiederum Funktionen von anderen Modulen (A und C) aufruft. Das Problem dabei:
Die Funktion aus B sollte mit etwas wie einem Funktions-Zeiger arbeiten, d.h. ich will ein Argument übergeben, welches die auszuführende Funktion angibt.
Hat einer eine gute Idee für eine Lösung?
Danke für die Hilfe im voraus.

Modul A:

Code: Alles auswählen

import B

def func_A1():
     # tu irgendwas
     return etwas

def main(sys.argv):
     B.func_B2(func_A1)
     # tu irgendwas



Modul C:

Code: Alles auswählen

import B

def func_C3():
     # tu irgendwas
     return etwas

def main(sys.argv):
     B.func_B2(func_C3)
     # tu irgendwas



Modul B:

Code: Alles auswählen


def func_B1(function_name):
     x = function_name()           # ruf entweder A.func_A1() oder C.func_C3()
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Beitragvon Panke » Mittwoch 12. Dezember 2007, 20:49

Funktionen sind Objekte und können einfach übergeben werden.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Donnerstag 13. Dezember 2007, 09:16

Ohne viele Worte:

Code: Alles auswählen

>>> import random
>>> def myfunc(f):   # Nimmt eine Funktion als Paramter
...     print f()
...
>>> myfunc(random.random)  # Eine Funktion als Parameter uebergeben
0.523756888582
>>> myfunc(dir)  # Eine Funktion als Parameter uebergeben
['f']
>>>
>>> f = getattr(random, "randint")  # Auf eine Funktion anhand ihres Namens zugreifen
>>> f(1, 3)
2
>>> f(1, 3)
1
>>>
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei

Wer ist online?

Mitglieder in diesem Forum: egon11, martinjo