Seite 1 von 1

Modulübergreifende Funktionsaufrufe

Verfasst: Mittwoch 12. Dezember 2007, 20:37
von PyRock
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()

Verfasst: Mittwoch 12. Dezember 2007, 20:49
von Panke
Funktionen sind Objekte und können einfach übergeben werden.

Verfasst: Donnerstag 13. Dezember 2007, 09:16
von Rebecca
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
>>>