Function as an Argument
Функції в Python є об'єктами першого класу. Це означає, що вони підтримують такі операції, як передача в якості аргументу, повернення з функції, модифікація та присвоєння змінній.
Функція-обгортка (wrapper) — це функція, яка дозволяє обгорнути іншу функцію для розширення поведінки обгорнутої функції без її постійної зміни.
Розглянемо ближче lambda-функцію як обгортку. Lambda-функція — це анонімна функція, яка приймає будь-яку кількість аргументів, але може мати лише один вираз.
Для створення цієї функції використовується ключове слово lambda:
Ви можете використовувати lambda-функцію як параметр в іншій функції:
add = lambda x: x + 2
subtract = lambda x: x - 2
double = lambda x: x * 2
divided = lambda x: x / 2
def calculate(operation, number):
return operation(number)
calculate(add, 10) # 12
calculate(subtract, 10) # 8
calculate(double, 10) # 20
calculate(divided, 10) # 5
from typing import Callable
def new_number(number: int) -> None:
print(f"Received a new number: {number}")
def is_positive(number: int) -> None:
if number > 0:
print(f"{number} is a positive number")
if number == 0:
print("Zero")
if number < 0:
print(f"{number} is a negative number")
def print_bye(number: int) -> None:
print("Bye!")
def numbers_handler(
numbers: list,
before : Callable[[int], None] = new_number,
action : Callable[[int], None] = is_positive,
after : Callable[[int], None] = print_bye,
) -> None:
for number in numbers:
before(number)
action(number)
after(number)