Python: Выражения как аргументы
Рассмотрим код из предыдущего урока:
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
Естественно, это работает не только с числами, а с любыми значениями и выражениями. Например, со строками.
print('D' + 'ragon'); # => 'Dragon'
Напомним, что в составе 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'
print('D' + 'ragon'); # => 'Dragon'
# выражения с переменными в аргументах
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
.