Функции · 25 из 29
Закрепить аргументы
Задействованы также: Словари
Половина расчётов в мастерской идёт с одной и той же ставкой. Писать её в каждом вызове надоело, а заводить отдельную функцию под каждую ставку — тем более.
Что сделать
Закрепите за расчётом аргументы, которые повторяются в каждом вызове.
Что приходит
rabota— функция, которую потом зватьfiksirovannye— позиционные аргументы, которые закрепитьimenovannye— именованные аргументы, которые закрепить
Что вернуть
Функцию: зовёт rabota с закреплёнными и своими аргументами — новые позиционные после закреплённых, новые именованные перекрывают закреплённые.
Допишите функцию zakrepit в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
schet(chasy, stavka, zapchasti=0); закрепили 3 часа: nash = zakrepit(schet, 3). Тогда nash(1500) — это schet(3, 1500), то есть 4500, а nash(2000, 500) — 3 × 2000 + 500 = 6500.
Функция принимает другую функцию и произвольные аргументы — позиционные и именованные. Они считаются закреплёнными. Возвращает функцию, которая вызывает исходную с закреплёнными аргументами и аргументами своего вызова: позиционные нового вызова идут следом за закреплёнными, именованные нового вызова перекрывают закреплённые. Закреплённые аргументы от вызова к вызову не меняются.
Образцовый тест целиком
def schet(chasy, stavka, zapchasti=0):
return chasy * stavka + zapchasti
nash = zakrepit(schet, 3)
(nash(1500), nash(2000, 500))
(4500, 6500)
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.