Создание (определение) функции

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

Вот шаблон определения простой функции:

def имя_функции():
    # тело функции, т.е. код
    print("abc")

Здесь мы в первый раз сталкиваемся с новым элементом синтаксиса — блоками инструкций. В Python несколько инструкций, объединённых по смыслу в некотоpyю группу - блок - записываются с отступом в четыре пробела. Блок всегда заканчивается перед первой строчкой, которая имеет отступ меньший, чем строчки блока. В примере выше тело функции — это блок.

Создадим нашу первую функцию. У неё будет одна задача: выводить на экран текст Today is: December 5.

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

def show_date():
    text = 'Today is: December 5'
    print(text)

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

Чтобы на 100% понять происходящее, обязательно сделайте следующее:

  1. Зайдите на https://repl.it/languages/python3. Это онлайн-интерпретатор Python.
  2. В левой части введите код примера выше.
  3. Запустите программу нажатием на “RUN ▶”.
  4. Программа выполнится, но на экран ничего не выведется, потому что в программе есть только определение функции, но не запуск.
  5. Чтобы запустить функцию, нужно вызвать её. Добавьте к программе вызов:
  show_date()  # => Today is: December 5
  1. Запустите программу снова и удостоверьтесь, что в правой части на экран вывелся текст.

Соберём всё вместе. Вот полная программа, с определением функции и вызовом:

def show_date():
    text = 'Today is: December 5'
    print(text)

show_date()
Today is: December 5

Мы могли бы использовать подобную функцию на сайте или в какой-нибудь программе чтобы выводить текущую дату на экран. Но в текущем виде функция не справится с задачей, ведь она всегда выводит Today is: December 5.

Давайте улучшим функцию так, чтобы она принимала дату в качестве аргумента и выводила её на экран.

Определим и вызовем нашу обновленную функцию:

def show_date(text):
    print("Today is: " + text)

show_date('January 29')
Today is: January 29

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

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

Заметьте: мы не создаём переменную text, но используем её в теле функции. Python работает так: переменная сама создаётся при вызове и указанное значение (в нашем примере — 'January 29') записывается в эту переменную.

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

def show_date(bla):
    print('Today is: ' + bla)

show_date('January 29')

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


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

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

def show_date(month, day):
    print('Today is: {} {}'.format(month, day))

show_date('January', '29')
Today is: January 29

Главное — помнить про порядок: в каком порядке аргументы стоят при определении функции, в таком же порядке они должны передаваться при вызове.

Задание

Реализуйте функцию print_jaimes_line, которая принимает один аргумент — строку, и выводит реплику на экран в формате JAIME: переданная_строка.

Как назвать переменную, которая будет аргументом — решайте сами.

Наша система содержит код, скрытый от вас. В этом упражнении скрыт вызов функции print_jaimes_line. Так мы проверяем ваше решение.

Вам не нужно самостоятельно вызывать функцию, только определить её. Но для наглядности — вот как наша система вызывает её:

print_jaimes_line("Farewell, my friend...")
JAIME:  Farewell, my friend...

Советы


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

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