Выражения как аргументы

Рассмотрим код из предыдущего урока:

result = round(10.25)  # 10

Функция round вызывается с аргументом 10.25.

Мы выяснили, что выражения превращаются в значения. То есть с точки зрения Python, значения и выражения — это что-то схожее. Поэтому любые значения в программе технически можно заменить выражениями.

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

result = round(8 + 2.25)  # 10

Результат будет таким же, как в первом примере, потому что выражение 8 + 2.25 превратится в значение 10.25, и с таким аргументом произойдет вызов round.

Более того, можно использовать переменные вперемешку со значениями и другими выражениями:

number = 1.25

result = round(number + 7 + 2)  # 10

Естественно, это работает не только с числами, а с любыми значениями и выражениями. Например, со строками.

Напомним, что в составе Python есть функция hex, которая принимает число и возвращает строку с шестнадцатиричным представлением этого числа. Вот простой вызов:

result = hex(255)  # '0xff'

А вот вызов, где в качестве единственного аргумента идёт целое выражение:

result = hex(200 + 55)  # '0xff'

Результат будет тем же: в result запишется строка '0xff', потому что выражение 200 + 55 превратится в значение 255, и с таким аргументом произойдет вызов hex.

Давайте подытожим. Взгляните на несколько примеров из текущего урока:

# простые вызовы
result = round(10.25)            # 10
result = hex(255)                # '0xff'

# выражения в аргументах
result = round(8 + 2.25)         # 10
result = hex(200 + 55)           # '0xff'

# выражения с переменными в аргументах
number = 1.25
result = round(number + 7 + 2)   # 10

digit = 5
result = hex(digit + 50 + 200)   # '0xff'

Заметьте схожесть: во всех вызовах в функции передается какая-то информация, но иногда это простое, «готовое» значение (10.25, 255), а иногда составное выражение — «неготовое» значение (8 + 2.25, number + 7 + 2 и т.д.). При этом во всех примерах передаётся один аргумент. Когда аргументов несколько, они обязательно разделяются запятыми.

Задание

Вам доступна функция calculate_distance_between_towns. Она принимает один аргумент, в котором должны содержаться названия двух городов через дефис. В ответ она возвращает расстояние между этими городами. Вот пример использования:

distance = calculate_distance_between_towns('Lannisport-Bayasabhad')

Напишите программу, которая использует функцию calculate_distance_between_towns и выводит на экран расстояние между городами, записанными в переменные source и destination.


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

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

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