Der einfachste Weg, eine Funktion zu verpacken
func(*args, **kwargs)
... besteht darin, manuell einen Wrapper zu schreiben, der func () in sich selbst aufruft :
def wrapper(*args, **kwargs):
# do something before
try:
return func(*a, **kwargs)
finally:
# do something after
In Python ist die Funktion ein Objekt, sodass Sie den Namen als Argument einer anderen Funktion übergeben und zurückgeben können. Sie können auch einen Wrapper-Generator für jede Funktion anyFunc () schreiben :
def wrapperGenerator(anyFunc, *args, **kwargs):
def wrapper(*args, **kwargs):
try:
# do something before
return anyFunc(*args, **kwargs)
finally:
#do something after
return wrapper
Beachten Sie auch, dass Sie in Python, wenn Sie nicht alle Argumente einer Funktion kennen oder nicht benennen möchten, auf ein Tupel von Argumenten verweisen können, das durch seinen Namen gekennzeichnet ist, gefolgt von einem Sternchen in den Klammern danach der Funktionsname:
*args
Sie können beispielsweise eine Funktion definieren, die eine beliebige Anzahl von Argumenten akzeptiert:
def testFunc(*args):
print args # prints the tuple of arguments
Python bietet noch weitere Manipulationen an Funktionsargumenten. Sie können einer Funktion erlauben, Schlüsselwortargumente anzunehmen. Innerhalb des Funktionskörpers werden die Schlüsselwortargumente in einem Wörterbuch gespeichert. In den Klammern nach dem Funktionsnamen wird dieses Wörterbuch durch zwei Sternchen gefolgt vom Namen des Wörterbuchs gekennzeichnet:
**kwargs
Ein ähnliches Beispiel, das das Schlüsselwortargument-Wörterbuch druckt:
def testFunc(**kwargs):
print kwargs # prints the dictionary of keyword arguments