Funkcje jako argumenty
Lekcja 3 z 12 w kursie Dekoratory w Pythonie w Coddy.
W Pythonie możemy przekazać funkcję jako argument do innej funkcji.
Na przykład,
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # Wynik: 5
result = calculate(multiply_numbers, 2, 3)
print(result) # Wynik: 6
W tym przykładzie definiujemy dwie funkcje: add_numbers i multiply_numbers.
Następnie definiujemy trzecią funkcję o nazwie calculate, która przyjmuje funkcję func jako pierwszy argument, a także dwa dodatkowe argumenty: a i b.
Wywołując calculate, przekazujemy nazwę funkcji, której chcemy użyć (albo add_numbers, albo multiply_numbers), jako argument func, wraz z dwiema liczbami, na których chcemy wykonać działanie.
Funkcja calculate wywołuje następnie funkcję func z tymi dwiema liczbami i zwraca wynik.
W powyższym przykładzie wywołujemy calculate dwa razy: raz z add_numbers i raz z multiply_numbers.
Pierwsze wywołanie zwraca sumę 2 i 3 (czyli 5), a drugie wywołanie zwraca iloczyn 2 i 3 (czyli 6).
Wyzwanie
ŁatwyNapisz funkcję o nazwie list_operator, która przyjmuje jako argumenty listę liczb całkowitych i funkcję operatora.
Funkcja operator powinna przyjmować jako dane wejściowe dwie liczby całkowite i zwracać jako wynik jedną liczbę całkowitą.
Funkcja list_operator powinna zastosować funkcję operatora do wszystkich par sąsiadujących liczb całkowitych na liście i zwrócić nową listę z wynikami.
Oto przykład działania tej funkcji:
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]Ograniczenia
- Lista wejściowa będzie zawsze zawierać co najmniej dwie liczby całkowite.
- Funkcja operatora będzie zawsze przyjmować jako dane wejściowe dwie liczby całkowite i zwracać jako wynik jedną liczbę całkowitą.
Uwaga! Funkcja operatora jest dostarczona przez nas, nie musisz jej tworzyć, wystarczy jej użyć.
Spróbuj swoich sił
Wszystkie lekcje w sekcji Dekoratory w Pythonie
Poćwicz samodzielnie: Kompilator Python online