Найти в Дзене
Журнал разработчика

Запись 15. Функции

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

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

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

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

В принципе мы уже знакомы с функциями, например, print() – это функция, int() – тоже функция. Но эти функции уже "встроены" в Python, а наша задача – научиться создавать свои.

Начинается создание функции с её объявления ключевым словом def. Следом указывается имя функции, которое мы придумываем сами. Затем в круглых скобках указываем параметры функции (их может и не быть, вспомните print(), который выводит пустую строку). Заканчивается строчка двоеточием. Ну а со следующей строки, с обязательным отступом в 4 пробела, пишем тело функции, т.е. то, что она должна делать.

Разберём на примере.

За окном капает, хоть и январь, поэтому такая функция... первое, что пришло в голову
За окном капает, хоть и январь, поэтому такая функция... первое, что пришло в голову

Разберём на части:

  • def – ключевое слово объявления функции
  • rain – имя функции (придумал сам)
  • () – место для параметров (при наличии)
  • : – не забываем про двоеточие
  • print('Идёт дождь!') – тело функции

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

Функции они такие, пока по имени не позовёшь, не сработают
Функции они такие, пока по имени не позовёшь, не сработают

В результате получим строчку:

-3

Теперь немного усложним, добавим аргумент.

При выводе используем f-строку, т.к. появилась переменная
При выводе используем f-строку, т.к. появилась переменная

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

Результат выглядит так:

Задача у функции одна, а вот результат разный и зависит от передаваемых аргументов
Задача у функции одна, а вот результат разный и зависит от передаваемых аргументов

Надеюсь пока всё понятно. Поэтому ещё немного усложним, добавим условий.

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

  • 0-3 балла – "Дороги свободны, можно ехать"
  • 4-7 баллов – "Ехать можно, но местами придётся постоять"
  • 8-10 баллов – "Кино и тёплый чай, ну или можно покодить. Никаких поездок"

Отлично, теперь напишем функцию traffic.

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

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