Python: Функции и их вызов
Как вы заметили, для каждой операции требуется свой собственный символ (оператор): для сложения чисел — +
, для конкатенации строк — +
, для деления чисел — /
, и так далее. Такой подход оправдан только для самых частых операций, ведь в реальной жизни есть тысячи разных задач. К тому же, даже если бы язык программирования включал в себя тысячу разных операторов, в какой-то момент программисту понадобился бы новый.
Любой язык программирования позволяет расширять набор операций. Такие новые операции называются «функциями». Давайте сначала научимся пользоваться уже созданными функциями, а уже потом будем создавать новые функции.
В Python есть функция для возведения числа в какую-нибудь степень. Вызовем её:
result = pow(2, 3) # 8
Мы создали переменную result
и указали интерпретатору записать в неё результат, который выдаст функция pow
. Запись pow(2, 3)
означает, что вызывается функция с именем pow
и с аргументами (или с параметрами) 2 и 3. Вызванная функция вернула значение.
Аргументы — это информация, которую функция получает при вызове. Именно на основе этой информации функция, как правило, вычисляет что-то и выдает результат.
Функция pow
возводит первое число в степень второго числа. В нашем примере мы возводили 2 в степень 3, поэтому в result
в итоге оказалось значение 8.
Вызов функции всегда обозначается скобками ()
, идущими сразу за именем функции. В скобках может быть любое количество аргументов, а иногда — вообще ни одного. Количество зависит от выполняемой операции. Например, для нахождения модуля числа используется функция с именем abs
:
result = abs(-5) # 5
result = abs(8) # 8
Как видно, эта функция принимает один аргумент (часто говорят «параметр») и возвращает его модуль. А вот пример функции, которая не принимает аргументов:
result = str() # ''
Функция str
возвращает пустую строку, если вызвана без аргумента.
Но математические операции — капля в море по сравнению со всем многообразием функций. Мощь в том, что вы можете создавать собственные функции — мы займёмся этим в следующем модуле. Любое действие, которое вы себе можете вообразить, в программировании представлено функциями.
Задание
В 7 королевствах жил один человек, который имел доступ к компьютерам и умел программировать — Сэм Тарли. Он занимался картографией, поэтому он написал для себя функцию calculate_distance
, высчитывающую расстояние (в лигах) между городами. Функция принимает два строковых параметра — два названия городов, и возвращает число — расстояние между ними.
Вот пример использования, где на экран выводится расстояние между Lannisport и Bayasabhad:
from hexlet.code_basics import calculate_distance
distance = calculate_distance('Lannisport', 'Bayasabhad')
print(distance)
Первая строчка — это специальный код, подключающий функцию calculate_distance
в вашу программу. Благодаря ей вы можете запускать функцию, но не видите её содержимое. Это обычное дело в программировании: вы знаете, что делает функция и как ей пользоваться, но не знаете как именно она работает внутри.
Воспользуйтесь функцией calculate_distance
и выведите на экран расстояние между городами Qarth и Vaes Dothrak. Не копируйте пример, а создайте переменную с другим именем и напишите код с нуля самостоятельно.
Определения
Функция - операция, способная принимать данные и возвращать результат; Имя функции, как и имя переменной, может быть любым, однако считается хорошим тоном называть функцию операцией, которую она выполняет; Если имя функции
foo
, то вызывается она так:foo()
.Аргумент - информация, которую функция получает при вызове. Например,
foo(42)
— передача аргумента42
функцииfoo
.
Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.