Czy funkcja Pythona może być argumentem innej funkcji?
Mówić:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
To są zasadniczo dwa pytania:
- Czy to w ogóle dozwolone?
- A jeśli tak, jak mam użyć tej funkcji w drugiej funkcji? Czy musiałbym użyć exec (), eval () czy czegoś takiego? Nigdy nie musiałem z nimi zadzierać.
BTW, extraArgs to lista / krotka argumentów innej funkcji.
Odpowiedzi:
Tak.
Mówiąc dokładniej ... z różnymi argumentami ...
źródło
Oto inny sposób użycia
*args
(i opcjonalnie)**kwargs
:Wynik
Należy zauważyć, że
function
,*args
,**kwargs
mają być w tym celu i muszą być ostatnie argumenty do funkcji wywoływania funkcji.źródło
Funkcje w Pythonie to obiekty pierwszej klasy. Ale twoja definicja funkcji jest trochę błędna .
źródło
Jasne, dlatego python implementuje następujące metody, w których pierwszym parametrem jest funkcja:
źródło
anotherfunc(*extraArgs)
źródło
Na przykład:
Dzwoniąc do myfunc, robisz to:
Spowoduje to wydrukowanie wartości zwracanej przez anotherfunc.
Mam nadzieję że to pomoże!
źródło
Funkcja wewnątrz funkcji: możemy również użyć funkcji jako parametru.
Innymi słowy, możemy powiedzieć, że wynik funkcji jest również odniesieniem do obiektu. Zobacz poniżej, w jaki sposób dane wyjściowe funkcji wewnętrznej odnoszą się do funkcji zewnętrznej, jak poniżej.
wynik będzie ... 14
Mam nadzieję że to pomoże.
źródło
źródło
Myślę, że byłaby to bardziej odpowiednia próbka. Teraz zastanawiam się, czy istnieje sposób na zakodowanie funkcji do użycia w ramach przesyłania argumentów do innej funkcji. Wydaje mi się, że jest w C ++, ale w Pythonie nie jestem pewien.
źródło
Dekoratory są bardzo potężne w Pythonie, ponieważ pozwalają programistom przekazywać funkcję jako argument, a także mogą definiować funkcję wewnątrz innej funkcji.
Wynik
źródło