Найти в Дзене
Python - простым языком

1.12. Детерминированность функций. Стандартная библиотека.

Перед тем, как мы продолжим погружаться в мир "пайтона", я хотел бы рассказать о двух моментах. Я долго думал как назвать этот урок, потому как считаю, что данными темами мы подводим небольшую черту под пройденными темами. Сегодня я хотел рассказать о такой важной, можно сказать фундаментальном свойстве - детерминированность. Детерминированная функция возвращает один и тот же результат для одинаковых входных аргументов. Ярким примером детерминированной функции является - len(). Вы можете сколько угодно раз передавать в неё аргумент, например строку "Автомобилист", она всегда будет возвращать один и тот же результат - 12 символов. Напомню, что данная функция возвращает количество символов в строке. Есть и обратный пример недетерминированной функции, например random(). Функция random() возвращает случайное число. Не важно, передаёте Вы в функцию аргументы или используете её чистой, даже если после миллиона вызовов функции она вернёт другой результат, такая функция называется недетерминир

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

Сегодня я хотел рассказать о такой важной, можно сказать фундаментальном свойстве - детерминированность.

Детерминированная функция возвращает один и тот же результат для одинаковых входных аргументов.

Ярким примером детерминированной функции является - len().

Вы можете сколько угодно раз передавать в неё аргумент, например строку "Автомобилист", она всегда будет возвращать один и тот же результат - 12 символов. Напомню, что данная функция возвращает количество символов в строке.

Есть и обратный пример недетерминированной функции, например random().

-2

Функция random() возвращает случайное число. Не важно, передаёте Вы в функцию аргументы или используете её чистой, даже если после миллиона вызовов функции она вернёт другой результат, такая функция называется недетерминированной.

Когда Вы, в дальнейшем, начнёте писать свои функции, я рекомендую делать функции детерминированными. Они более удобны в работе, их легко оптимизировать и тестировать. Конечно, могут быть задачи, требующие здесь и сейчас вызов недетерминированной функций, но в большинстве своём, Вы будете иметь дело именно с детерминированными функциями.

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

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

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

С одной стороны, побочные эффекты один из основных источников проблем и ошибок в программах. Код сложнее тестировать, снижается его надёжность. Однако, без побочных эффектов программирование не имеет смысла. Без них невозможно получить результат работы программы, например, вывести результат на экран, отправить по сети, или записать данные в базу.

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

Стандартная библиотека

Дальше будет немного текста, но очень важного текста.

Стандартная библиотека - это набор полезных функций, которые поставляются вместе с "пайтоном". В неё входят тысячи функций. Их всех Вы всё равно не запомните. Но, Вы обязаны знать, где их смотреть, что бы в последствие использовать при разработке проектов.

Я КРАЙНЕ рекомендую, периодически, время от времени, заглядывать в официальную документацию "пайтона" и изучать сигнатуру функций и результат, который выдаёт вызов функций. По мере разработки проектов, и чтения официальной документации, Вы будете становиться опытнее, а Ваши знания будут расти. Постепенно Вы будете узнавать новые функции и успешно их применять.

Если говорить простым языком, то сначала вы пишите односложный код, который растягивается на 15-20 строчек. Потом Вы узнаете, что есть функция, которая позволит Вам получить нужный результат, гораздо проще и быстрее. Вы заменяете свои пять строчек кода на одну, получаете нужный Вам результат, а общий размер код уже сократился до 10-15 строчек. Чем больше Вы будете изучать документацию, узнавать новые функции, применять их на практике, Ваш код (который в начале Вашего пути занимал 20 строчек) будет умещаться в 5-7.

Повторюсь, на "первых парах" обязательно изучать документацию, даже по тем функциям, которые Вы уже изучили и использовали. Так, Вы выработаете привычку изучать документацию и Ваши знания будут пополняться гораздо быстрее.

Ещё одним из важных моментов изучения программирования - это чтение чужого кода. Открывайте GitHub, находите какие-то простые программы, которые были написаны и выложены в общий доступ, и читайте-читайте код.

Конечно, не Всё сразу будет понятно, но и алфавит Вы тоже не сразу изучили.

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

Если Вам нравятся мои уроки, то "лайк" и подписка на мой канал, будут самой большой наградой!