Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

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

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

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

Детерминированная функция

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

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

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

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

Можно бесконечно вызывать эту функцию и передавать туда значение 'hexlet' — она всегда вернет 6.

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

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

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

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

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

Побочные эффекты

В Python есть функция print(), которая принимает на вход данные любого типа и выводит их на экран. Она вызывает побочный эффект — из-за выполнения функции запускается действие, которое изменяет среду выполнения. Еще побочные эффекты вызывают любые сетевые взаимодействия, чтение и запись файлов, вывод информации на экран или печать на принтере.

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

Побочными эффектами print() отличается от других функций, которые также принимают на вход данные любого типа. Другие функции возвращают значения, которые можно дальше использовать. В отличие от них, функция print() выводит такой результат, с которым ничего нельзя сделать. Вывод на экран и возврат значения из функции — разные и независимые операции.

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


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

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

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
16 марта 8 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»