Ein ähnliches Problem in der Regel auf zwei Arten gelöst:
- Mit Lambda ... aber dann wird die übergebene Funktion ein Argument erwarten, so groß() Bedürfnisse geändert werden
- Mit benannten Funktionen Aufruf der ursprünglichen Funktionen mit Argumenten. Bitte beachten Sie, dass solche Funktionen innerhalb anderer Funktionen deklariert werden können und die Argumente Variablen sein können.
Siehe Beispiel:
#!/usr/bin/python
def lite(a,b,c):
return "%r,%r,%r" % (a,b,c)
def big(func): # func = callable()
print func()
def big2(func): # func = callable with one argument
print func("anything")
def main():
param1 = 1
param2 = 2
param3 = 3
big2(lambda x: lite(param1, param2, param3))
def lite_with_params():
return lite(param1,param2,param3)
big(lite_with_params)
main()
Sie auch 'groß tun können (lite, 1, 2, 3)' und 'def groß (func, * args): func (* args)' –
Das ist schön, wenn Sie 'big' ändern können (und wollen), und' lite' hat eine feste Signatur. Aber oft sind einer oder beide extern. In diesem Fall ist Teddys Methode ("partiell") viel allgemeiner. – Mark