return завершает функцию
return делает сразу две вещи: возвращает значение и немедленно завершает функцию. Остальная часть функции не выполняется:
def add(a, b):
return a + b
print("Эта строка никогда не выполнится.")
print(add(2, 3))Выведется:
5Строка после return не выполняется никогда, потому что функция закончилась строкой раньше.
Это удобно вместе с условиями. Следующая функция описывает погоду по температуре:
def describe_weather(degrees):
if degrees < 0:
return "морозно"
if degrees < 20:
return "прохладно"
return "тепло"
print(describe_weather(-5))
print(describe_weather(12))
print(describe_weather(25))Выведется:
морозно
прохладно
теплоРазберём три вызова:
describe_weather(-5):-5 < 0— этоTrue, поэтому функция возвращает"морозно"и заканчивается. Второе условие даже не проверяется.describe_weather(12): первое условиеFalse, а второеTrue, поэтому функция возвращает"прохладно".describe_weather(25): ни одно из условий неTrue, поэтому функция доходит до последней строки и возвращает"тепло".
Нам не понадобились ни elif, ни else: как только выполнился return, остальная часть функции всё равно пропускается. (С elif и else функция работала бы так же.) Но порядок условий важен, потому что побеждает первый выполнившийся return. Если бы функция сначала проверяла degrees < 20, для -5 она вернула бы "прохладно", ведь -5 тоже меньше 20.
Задание
- 1
Функция
ticket_priceвозвращает цену билета в зоопарк для посетителя заданного возраста. Пока она возвращает10для всех. Над строкойreturn 10добавьте условия: дети младше 6 лет проходят бесплатно (0), а посетители младше 18 лет платят5. Тогда программа выведет0,5и10. - 2
Пожилые люди от 65 лет тоже платят
5. Добавьте в функцию условие для них, а в конце программы выведитеticket_price(70).