в разных программах.
8
Функции
Эта глава посвящена
функциям — именованным блокам кода, предназначенным
для решения одной конкретной задачи. Чтобы выполнить задачу, определенную
в виде функции, вы указываете имя функции, отвечающей за эту задачу. Если зада-
ча должна многократно выполняться в программе, вам не придется заново вводить
весь необходимый код; просто вызовите функцию, предназначенную для решения
задачи, и этот вызов приказывает Python выполнить код, содержащийся внутри
функции. Как вы вскоре убедитесь, использование функций упрощает чтение, на-
писание, тестирование кода и исправление ошибок.
В этой главе также рассматриваются возможности передачи информации функ-
циям. Вы узнаете, как писать функции, основной задачей которых является вывод
информации, и другие функции, предназначенные для обработки данных и возвра-
щения значения (или набора значений.) Наконец, вы научитесь хранить функции
в отдельных файлах, называемых модулями, для упорядочения файлов основной
программы.
Определение функции
Вот простая функция
greet_user()
, которая выводит приветствие:
greeter.py
def greet_user():
"""Выводит простое приветствие."""
print("Hello!")
greet_user()
В этом примере представлена простейшая структура функции. Строка при по-
мощи ключевого слова
def
сообщает Python, что вы определяете функцию. В опре-
делении функции указывается имя функции и, если нужно, описание информации,
необходимой функции для решения ее задачи. Эта информация заключается
в круглые скобки. В данном примере функции присвоено имя
greet_user()
, и она
не нуждается в дополнительной информации для решения своей задачи, поэтому
круглые скобки пусты. (Впрочем, даже в этом случае они обязательны.) Наконец,
определение завершается двоеточием.
Все строки с отступами, следующие за
def greet_user():
, образуют тело функ-
ции. Текст в точке представляет собой комментарий — строку документации
136 Глава 8 • Функции
с описанием функции. Строки документации заключаются в утроенные кавычки;
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("Hello, " + username.title() + "!")
greet_user('jesse')
Команда
greet_user('jesse')
вызывает функцию
greet_user()
и передает ей
информацию, необходимую для выполнения команды
print
.
Функция получает
переданное имя и выводит приветствие для этого имени:
Hello, Jesse!
Точно так же команда
greet_user('sarah')
вызывает функцию
greet_user()
и передает ей строку
'sarah'
, что приводит к выводу сообщения
Hello, Sarah!
Функцию
greet_user()
можно вызвать сколько угодно раз и передать ей любое
имя на ваше усмотрение — и вы будете получать ожидаемый результат.
Аргументы и параметры
Функция
greet_user()
определена так, что для работы она должна получить
значение переменной
username
. После того как функция будет вызвана и полу-
чит необходимую информацию (имя пользователя), она выведет правильное
приветствие.
Передача аргументов
137
Переменная
username
в определении
greet_user()
— параметр, то есть условные
данные, необходимые функции для выполнения ее работы. Значение
'jesse'
в
greet_user('jesse')
—
аргумент, то есть конкретная информация, переданная
при вызове функции. Вызывая функцию, вы заключаете значение, с которым
функция должна работать, в круглые скобки. В данном случае аргумент
'jesse'
был передан функции
greet_user()
, а его значение было сохранено в переменной
username
.
Достарыңызбен бөлісу: