Elementor Header #8

52. Комбинирование операций и функций

Добро пожаловать на 52-й урок по Python! Сегодня мы рассмотрим, как комбинировать операции и функции, чтобы создавать более мощные и гибкие программы. Комбинирование операций и функций позволяет разрабатывать более сложные и полезные конструкции, упрощая код и улучшая его читабельность.

Основы комбинирования операций и функций

1. Применение функций внутри выражений

Функции можно использовать внутри выражений и операций для обработки данных перед выполнением других операций.

Пример

				
					def square(x: int) -> int:
    return x * x

result = square(5) + 3
print(result)  # Вывод: 28 (25 + 3)

				
			

В этом примере функция square используется внутри выражения для вычисления квадрата числа, а затем прибавляется 3.

2. Использование функций в качестве аргументов

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

Пример с функцией map

				
					def double(x: int) -> int:
    return x * 2

numbers = [1, 2, 3, 4]
doubled_numbers = list(map(double, numbers))
print(doubled_numbers)  # Вывод: [2, 4, 6, 8]

				
			

Здесь функция double передается в функцию map, которая применяет её ко всем элементам списка numbers.

3. Использование функций высшего порядка

Функции высшего порядка принимают функции в качестве аргументов и/или возвращают функции. Это позволяет создавать более абстрактные и мощные конструкции.

Пример с функцией filter

				
					def is_even(n: int) -> bool:
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # Вывод: [2, 4]

				
			

Функция filter принимает предикат (функцию is_even) и список, и возвращает новый список, содержащий только те элементы, которые удовлетворяют условию.

Комбинирование операций с результатами функций

1. Сложные выражения

Функции и операции могут быть объединены в сложные выражения для выполнения комплексных вычислений.

Пример

				
					def add(x: int, y: int) -> int:
    return x + y

def multiply(x: int, y: int) -> int:
    return x * y

result = multiply(add(2, 3), add(4, 5))
print(result)  # Вывод: 63 (5 * 9)

				
			

Здесь результат выполнения функции add используется в качестве аргумента для функции multiply.

2. Чередование функций и операций

Функции могут быть применены к результатам операций, а операции могут быть применены к результатам функций.

Пример

				
					def increment(x: int) -> int:
    return x + 1

def square(x: int) -> int:
    return x * x

number = 5
result = square(increment(number))
print(result)  # Вывод: 36 ((5 + 1) * (5 + 1))

				
			

В этом примере сначала выполняется функция increment, а затем результат используется в функции square.

Практическое задание

Создайте новый файл с именем combining_operations_functions.py.

Вставьте в него следующий код и выполните задания по комбинированию операций и функций:

				
					# Задание 1: Функция для вычисления суммы квадратов двух чисел
def sum_of_squares(x: int, y: int) -> int:
    return x * x + y * y

print(sum_of_squares(3, 4))  # Ожидаемый вывод: 25 (9 + 16)

# Задание 2: Функция для фильтрации и подсчета четных чисел
def count_even_numbers(numbers: list) -> int:
    def is_even(n: int) -> bool:
        return n % 2 == 0
    return len(list(filter(is_even, numbers)))

print(count_even_numbers([1, 2, 3, 4, 5, 6]))  # Ожидаемый вывод: 3

# Задание 3: Функция для вычисления суммы чисел в списке после умножения их на 2
def sum_doubled(numbers: list) -> int:
    def double(x: int) -> int:
        return x * 2
    return sum(map(double, numbers))

print(sum_doubled([1, 2, 3]))  # Ожидаемый вывод: 12 (2 + 4 + 6)

				
			

Запустите файл combining_operations_functions.py, чтобы убедиться, что все примеры выполняются корректно.

Заключение

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

logo