Условно применить функцию

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Python функции являются объектами первого класса, что означает, что их можно передавать подобно любому другому значению. Одно полезное применение этого заключается в том, чтобы условно применить функцию к значению на основе некоторого предиката. В этом испытании вам будет предложено написать функцию, которая принимает функцию предиката и функцию для применения, когда предикат истинен, и возвращает новую функцию, которая применяет функцию, когда предикат истинен.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") subgraph Lab Skills python/comments -.-> lab-13742{{"Условно применить функцию"}} python/conditional_statements -.-> lab-13742{{"Условно применить функцию"}} python/tuples -.-> lab-13742{{"Условно применить функцию"}} python/function_definition -.-> lab-13742{{"Условно применить функцию"}} python/lambda_functions -.-> lab-13742{{"Условно применить функцию"}} end

Применить функцию, когда условие истинно

Напишите функцию под названием when, которая принимает два аргумента: функцию предиката predicate и функцию для применения when_true. Функция when должна возвращать новую функцию, которая принимает один аргумент x. Новая функция должна проверить, является ли значение predicate(x) истинным. Если это так, новая функция должна вызвать when_true(x) и вернуть результат. В противном случае новая функция должна вернуть x.

def when(predicate, when_true):
  return lambda x: when_true(x) if predicate(x) else x
double_even_numbers = when(lambda x: x % 2 == 0, lambda x : x * 2)
double_even_numbers(2) ## 4
double_even_numbers(1) ## 1

Резюме

В этом испытании вы написали функцию, которая условно применяет функцию к значению на основе некоторого предиката. Это полезный метод для создания более гибкого и повторно используемого кода.