Der erste Kommentar scheint einfach die Idee zu wiederholen, dass Sie eine MATLAB-Funktion als Argument übergeben können (obwohl die Antwort nichts aussagte, was mich anders denken lassen würde). Der zweite Kommentar schien dies zu interpretieren, dass der erste Kommentator gedacht, dass man konnte nicht dies in Python tun und reagiert zu erklären, dass Sie entweder eine Lambda oder passieren die Funktion direkt verwenden können.
Unabhängig davon, vorausgesetzt, dass Sie sie richtig verwenden, ist eine Funktion behandeln in MATLAB funktionell gleichwertig mit entweder ein Lambda oder Funktionsobjekt als ein Eingabeargument in Python.
Wenn Sie in Python das ()
nicht an das Ende der Funktion anhängen, führt es die Funktion nicht aus und liefert stattdessen das Funktionsobjekt, das dann an eine andere Funktion übergeben werden kann.
# Function which accepts a function as an input
def evalute(func, val)
# Execute the function that's passed in
return func(val)
# Standard function definition
def square_and_add(x):
return x**2 + 1
# Create a lambda function which does the same thing.
lambda_square_and_add = lambda x: x**2 + 1
# Now pass the function to another function directly
evaluate(square_and_add, 2)
# Or pass a lambda function to the other function
evaluate(lambda_square_and_add, 2)
In MATLAB Sie haben eine Funktion Griff zu verwenden, da MATLAB eine Funktion auszuführen versucht, auch wenn Sie die ()
weglassen.
function res = evaluate(func, val)
res = func(val)
end
function y = square_and_add(x)
y = x^2 + 1;
end
%// Will try to execute square_and_add with no inputs resulting in an error
evaluate(square_and_add)
%// Must use a function handle
evaluate(@square_and_add, 2)
Danke für die schnelle Antwort, akzeptiert dies als die Antwort – cbcoutinho