Где живут переменные и как функции обмениваются данными.
⏱️ ~1 ч·Начальный·📚 4 урока
У каждой функции своя «комната»
Представьте, что функцияИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат. — это отдельная комната с собственными вещами. ПеременныеИменованное хранилище для значения. Имя связывается со значением через присваивание: x = 5., созданные внутри функции, лежат в этой комнате и снаружи невидимы — это называется локальная область видимости. Как только функция завершилась, её «комната» убирается, и локальные переменные исчезают.
▶ scope.py
secret существует только внутри calc. Снаружи его нет — попытка обратиться вызовет NameError. Единственный «легальный» способ вынести значение наружу — вернуть его через return.
Возврат нескольких значений
Иногда из функции нужно отдать сразу несколько результатов. Перечислите их через запятую — Python упакует их в кортежНеизменяемая упорядоченная коллекция: (1, 2). Похож на список, но менять нельзя. По-английски tuple., а вы распакуете обратно в отдельные переменные.
▶ multi-return.py
СтрокаТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str).return min(numbers), max(numbers) возвращает пару значений, а low, high = ... сразу раскладывает её по переменным. Это удобный способ вернуть, например, минимум и максимум за один вызов.
💡Совет
Хорошая функция делает одну вещь и имеет понятное имя-глагол: find_max, count_words, is_valid. Если функция разрослась и делает много всего — её стоит разбить на несколько маленьких.
💡Совет
Предскажите вывод. Что напечатает print(x) в коде ниже? Подсказка: x создаётся внутри функции.
▶ predict-scope.py
print(make()) напечатает 10 — функция вернула значение. А вот print(x) (если раскомментировать) упадёт с NameError: переменная x жила только внутри функции.
⚠️ Частые ошибки новичков
Ошибка. Обратиться снаружи к переменной, созданной внутри функции. Запустите код — увидите NameError. Почините: верните значение через return и сохраните его в переменную снаружи.
▶ broken-scope.py
Заданиерешение.py
Напишите функцию sum_list(nums), которая принимает список чисел и возвращает их сумму. Не используйте встроенную sum() — пройдите циклом.
Заданиерешение.py
Напишите функцию first_last(items), которая возвращает два значения — первый и последний элементы списка. Например, для [1, 2, 3] вернёт 1 и 3.
Заданиесредняярешение.py
Напишите функцию average(nums), которая возвращает среднее арифметическое списка чисел. Для пустого списка верните 0 (чтобы не делить на ноль).
❓Проверь себя
Чем return отличается от print?
Что произойдёт с кодом после строки return внутри функции?
Можно ли снаружи обратиться к переменной, созданной внутри функции?
ℹ️Важно
✅ Что вы узнали
Переменные внутри функции локальны — снаружи их не видно.
Чтобы вынести значение наружу, используют return.
Функция может вернуть несколько значений через запятую (кортеж).
Их удобно распаковать: a, b = func().
Хорошая функция делает одну вещь и имеет понятное имя.
Комментарии
Загрузка…
Загрузка комментариев…