Ich verwende ein Python3-Skript, um einige Messdaten zu interpolieren. Dazu möchte ich eine Funktion schreiben, die die Interpolationsfunktion zurückgibt. Diese interpolierende Funktion sollte nur ein bestimmtes benanntes Argument haben. Hier ist eine vereinfachte Version von dem, was ich mit so weit gekommen bin:Zurückgeben einer Funktion, die nur benannte Argumente zulässt
from scipy.interpolate import interp1d
x = [1, 2]
y = [1, 3]
def linear_interp(x, y):
# Interpolate the data
y_interp = interp1d(x, y)
# Create a function taking only a named argument x
def y_interp_named(*, x):
return y_interp(x)
return y_interp_named
y_linear_interp = linear_interp(x, y)
print(y_linear_interp(x = 1.5)) # This should work
print(y_linear_interp(1.5)) # This should throw an error
Während dies wie vorgesehen funktioniert, ich frage mich, ob es ohne die Verwendung der Funktion y_interp_named
in einer eleganteren/kompakt realisiert werden kann.
Allgemein: Gibt es für eine Funktion, die eine andere Funktion zurückgibt, die Möglichkeit, anzugeben, dass die zurückgegebene Funktion nur bestimmte benannte Argumente außer der Definition der zurückgegebenen Funktion verwenden soll?
Nein, erfordert die Unterschrift Ändern einer Schicht aus Indirektion, einfach weil Sie die ursprüngliche Funktion nicht verwenden können. Auch wenn Sie es eleganter machen können, ist dies ohne eine zusätzliche Funktion nicht möglich. – MSeifert