Зарегистрируйтесь, чтобы продолжить обучение

Детерминированность Основы Python

Двое сидят и разговаривают о детерминированной функции

У функций в любом языке программирования есть фундаментальные свойства. Эти свойства помогают понимать, как функция будет вести себя в разных ситуациях, как её тестировать и где применять. Одно из таких свойств — детерминированность.

Детерминированная функция всегда возвращает один и тот же результат при одинаковых входных данных. Например, детерминированной можно назвать функцию, которая считает количество символов:

len('hexlet')  # 6
len('hexlet')  # 6

len('wow')  # 3
len('wow')  # 3

Функцию len() можно вызывать бесконечно с одним и тем же аргументом, и она всегда вернёт один и тот же результат.

Недетерминированные функции

Есть и обратные примеры — недетерминированные функции. Это функции, которые могут возвращать разные результаты при одинаковых входных данных или при их отсутствии (функции без параметров). Хороший пример — функция, которая возвращает случайное число:

# Синтаксис импортов будет изучаться позже на Хекслете
from random import random

# Функция, которая возвращает случайное число
random()  # 0.09856613113197676
random()  # 0.8839904367241888

У этой функции нет аргументов, но её результат каждый раз разный. Если хотя бы один вызов среди миллионов даст другой результат, функция считается недетерминированной.

Почему это важно

Детерминированность влияет на то, как мы работаем с функциями:

  • детерминированные функции легко тестировать и предсказывать;
  • их проще оптимизировать и использовать повторно;
  • недетерминированные функции сложнее проверять, потому что результат меняется.

Поэтому там, где это возможно, лучше стремиться к тому, чтобы функция была детерминированной.


Дополнительные материалы

  1. Детерминированные функции
  2. Побочный эффект

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff