Окружение

Какое значение окажется внутри переменной result после выполнения кода?

age = 5

def generate():
    return age + 3

result = generate()

Правильный ответ: в result будет записано число 8.

Хоть переменная age и не является аргументом функции generate, она всё равно «видна» в теле функции. Точно так же будут видны и любые другие переменные, если они определены выше определения функции (т.е. определены ранее, ведь интерпретатор Python читает файл сверху-вниз).


Рассмотрим другой пример:

age = 5

def generate():
    age = 10
    return age + 3

result = generate()

В данном случае результатом будет число 13. Внешнее значение age = 5 никак не влияет на код функции, потому что в теле функции определена «своя версия» переменной age — так называемая локальная переменная. Локальные переменные не видны за пределами функции.

И последний пример:

age = 5

def generate():
    age = 8

generate()

result = age

Ответ: 5.

Локальная переменная, созданная внутри функции generate никак не влияет на внешнюю переменную age, поэтому после вызова функции значение внешней age не изменилось и осталось 5.

Задание

Это задание не связано напрямую с уроком, это просто еще одно полезное упражнение по работе с функциями.

Напишите функцию get_age_difference, которая принимает два года рождения и возвращает строку с разницей в возрасте в виде The age difference is 11.


Советы

  • Напомним, что в Python есть функция abs, которая возвращает модуль переданного числа: например, abs(-12) вернёт 12.


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

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

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