8
Функции
Эта глава посвящена
функциям
— именованным блокам кода, предназначенным для
решения одной конкретной задачи. Чтобы выполнить задачу, определенную в виде
функции, вы
вызываете
функцию, отвечающую за эту задачу. Если задача должна
многократно выполняться в программе, вам не придется заново вводить весь не-
обходимый код; просто вызовите функцию, предназначенную для решения задачи,
и этот вызов прикажет Python выполнить код, содержащийся внутри функции.
Как вы вскоре убедитесь, использование функций упрощает чтение, написание,
тестирование кода и исправление ошибок.
В этой главе также рассматриваются возможности передачи информации функ-
циям. Вы узнаете, как писать функции, основной задачей которых является вывод
информации, и другие функции, предназначенные для обработки данных и возвра-
щения значения (или набора значений). Наконец, вы научитесь хранить функции
в отдельных файлах, называемых
модулями
, для упорядочения файлов основной
программы.
Определение
функции
Вот
простая функция с именем
greet_user
()
, которая выводит приветствие:
greeter.py
❶
def greet_user():
❷
"""Выводит простое приветствие."""
❸
print("Hello!")
❹
greet_user()
В этом примере представлена простейшая структура функции. Строка
при по-
мощи ключевого слова
def
сообщает Python, что вы определяете функцию. В
опре-
делении функции
указывается имя функции и если нужно — описание информации,
необходимой функции для решения ее задачи. Эта информация заключается
в круглые скобки. В данном примере функции присвоено имя
greet_user()
и она
не нуждается в дополнительной информации для решения своей задачи, поэтому
144
Глава 8 • Функции
круглые скобки пусты. (Впрочем, даже в этом случае они обязательны.) Наконец,
определение завершается двоеточием.
Все строки с отступами, следующие за
def
greet_user():
, образуют
тело
функ-
ции. Текст в точке
представляет собой комментарий —
строку документации
с описанием функции. Строки документации заключаются в утроенные кавычки;
Python опознает их по этой последовательности символов во время генерирования
документации к функциям в ваших программах.
«Настоящий» код в теле этой функции состоит
всего из одной строки
print("Hello!")
— см.
. Таким образом, функция
greet_user()
решает всего
одну задачу:
выполнение команды
print("Hello!")
.
Когда потребуется использовать эту функцию, вызовите ее.
Вызов функции
при-
казывает Python выполнить содержащийся в ней код. Чтобы вызвать функцию,
укажите ее имя, за которым следует вся необходимая информация, заключенная
в круглые скобки, как показано в строке
. Так как никакая дополнительная ин-
формация не нужна, вызов функции эквивалентен простому выполнению команды
greet_user()
.
Как и ожидалось,
функция выводит сообщение
Hello!
:
Hello!
Передача
информации функции
С небольшими изменениями функция
greet_user()
сможет не только сказать
«Привет!» пользователю, но и поприветствовать его по имени. Для этого следует
включить имя
username
в круглых скобках в определении функции
def
greet_
user()
. С добавлением
username
функция примет любое значение, которое будет
заключено в скобки при вызове. Теперь функция ожидает, что при каждом вызове
будет передаваться имя пользователя. При вызове
greet_user()
укажите имя (на-
пример,
'jesse'
) в круглых скобках:
def greet_user(username):
"""Выводит простое приветствие."""
print(f"Hello, {username.title()}!")
greet_user('jesse')
Команда
greet_user('jesse')
вызывает функцию
greet_user()
и передает ей
информацию, необходимую для выполнения команды
print
. Функция получает
переданное имя и выводит приветствие для этого имени:
Hello, Jesse!
Точно так же команда
greet_user('sarah')
вызывает функцию
greet_user()
и передает ей строку
'sarah'
, в результате чего будет выведено сообщение
Hello,
Sarah!
Функцию
greet_user()
можно вызвать сколько угодно раз и передать ей
любое имя на ваше усмотрение — и вы будете получать ожидаемый результат.
Передача
аргументов
145
Аргументы
и параметры
Функция
greet_user()
определена так, что для работы она должна получить зна-
чение переменной
username
. После того как функция будет вызвана и получит не-
обходимую информацию (имя пользователя), она выведет правильное приветствие.
Переменная
username
в определении
greet_user()
—
параметр
, то есть условные
данные, необходимые функции для выполнения ее работы. Значение
'jesse'
в
greet_user('jesse')
—
аргумент
, то есть конкретная информация, переданная
при вызове функции. Вызывая функцию, вы заключаете значение, с которым
функция должна работать, в круглые скобки. В данном случае аргумент
'jesse'
был передан функции
greet_user()
, а его значение было сохранено в переменной
username
.
Достарыңызбен бөлісу: