Вызов функций
Чтобы выполнить функцию, её нужно вызвать: напишите её имя и круглые скобки:
def say_hello():
print("Привет!")
print("Хорошего дня!")
say_hello()Выведется:
Привет!
Хорошего дня!Когда Python доходит до вызова, он переходит в функцию, выполняет её тело сверху вниз и продолжает со строки после вызова. Функцию можно вызывать сколько угодно раз:
def say_hello():
print("Привет!")
print("Начало")
say_hello()
say_hello()
print("Конец")Выведется:
Начало
Привет!
Привет!
КонецСначала Python проходит мимо определения и только запоминает функцию. Затем он выводит Начало, дважды выполняет тело функции и в конце выводит Конец. Обратите внимание, что у вызовов нет отступа: они не входят в тело. Пустая строка после функции не обязательна, но так программу легче читать.
Python читает программу сверху вниз, поэтому функцию нужно определить до того, как её вызывать. Эта программа вызывает say_goodbye() в первой же строке, когда Python ещё не знает такой функции:
say_goodbye()
def say_goodbye():
print("До свидания!")Она завершается ошибкой:
Traceback (most recent call last):
File "<exec>", line 1, in <module>
NameError: name 'say_goodbye' is not definedПоэтому функции мы определяем в первую очередь, обычно в начале программы, а вызываем ниже их определений.
Остерегайтесь ещё двух частых ошибок:
- Забытые скобки.
say_helloбез них не вызывает функцию, а только упоминает её, поэтому ничего не происходит, даже ошибки. Иprint(say_hello)тоже не вызывает её: он лишь выводит что-то вроде<function say_hello at 0x...>. - Другое имя. Имя в вызове должно в точности совпадать с именем в определении, включая заглавные и строчные буквы, поэтому
Say_hello()завершится ошибкойNameError: name 'Say_hello' is not defined. Did you mean: 'say_hello'?
Задание
- 1
Под функцией вызовите
first_functionтри раза. - 2
Добавьте вторую строку в тело функции:
print("Функции — это здорово!"). Запустите программу: каждый из трёх вызовов теперь выводит обе строки. Вы изменили код в одном месте, а все три вызова стали делать что-то новое. Для этого функции и нужны.