0Pricing
Python Academy · Урок

Возвращаемые значения и область видимости

Разберитесь в операторах return и области видимости переменных: локальной и глобальной.

«Возвращаемые значения и область видимости» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Понимание операторов return и области видимости переменных необходимо для написания предсказуемых функций Python без ошибок.

Оператор return

return expr завершает функцию и передаёт expr вызывающему коду. return без значения передаёт None.
def double(x):
    return x * 2
print(double(5))

Досрочный возврат

Несколько операторов return допустимы: первый выполненный оператор завершает функцию. Это удобно для защитных условий.
def abs_val(x):
    if x < 0:
        return -x
    return x
print(abs_val(-7))

Локальная область видимости

Переменные, созданные внутри функции, являются локальными и не существуют за её пределами.
def f():
    x = 10
    print(x)
f()
# print(x)  # NameError

Глобальная область видимости

Переменные, определённые на уровне модуля, являются глобальными. Функции могут READ глобальные переменные без их объявления.
name = 'Alice'
def greet():
    print('Hello', name)  # reads global
greet()

Ключевое слово global

global x внутри функции позволяет выполнять WRITE в глобальную переменную. Используйте это экономно: такой код сложно анализировать.
counter = 0
def increment():
    global counter
    counter += 1
increment()
print(counter)

Ключевое слово nonlocal

nonlocal x во вложенной функции позволяет выполнять запись в переменную области видимости, окружающей функцию, но не глобальной области.
def make_counter():
    count = 0
    def inc():
        nonlocal count
        count += 1
        return count
    return inc
c = make_counter()
print(c(), c())

Правило LEGB

Python разрешает имена в следующем порядке: локальная область → окружающая область → глобальная область → встроенные имена. Это правило LEGB.
x = 'global'
def outer():
    x = 'enclosing'
    def inner():
        print(x)  # enclosing
    inner()
outer()

Возврат нескольких значений

def f(): return 1, 2, 3 возвращает кортеж. Запись a, b, c = f() распаковывает его.
def stats(lst):
    return min(lst), max(lst), sum(lst)/len(lst)
lo, hi, avg = stats([1,2,3,4,5])
print(lo, hi, avg)

Возврат функций (замыкания)

Функция может возвращать другую функцию. Вложенная функция запоминает область видимости outer-функции — это замыкание.
def make_adder(n):
    def adder(x):
        return x + n
    return adder
add5 = make_adder(5)
print(add5(3))

None и отсутствующий return

Всегда явно возвращайте None, если хотите обозначить отсутствие значения. Неявный None допустим, но явная запись понятнее.
def find(lst, val):
    for i, x in enumerate(lst):
        if x == val:
            return i
    return None
print(find([1,2,3], 9))

Быстрая проверка

Какая область видимости проверяется последней согласно правилу LEGB?

Итоги

return завершает функцию и возвращает значение. Локальные переменные не выходят за пределы функции. Используйте global и nonlocal для записи во внешние области видимости. LEGB: локальная, окружающая, глобальная и встроенная области.

Продолжайте

Отличная работа! Перейдите к следующему уроку, чтобы продолжить обучение.

Часто задаваемые вопросы

Урок «Возвращаемые значения и область видимости» бесплатный?

Да — полный текст урока «Возвращаемые значения и область видимости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Возвращаемые значения и область видимости»?

Разберитесь в операторах return и области видимости переменных: локальной и глобальной. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Возвращаемые значения и область видимости»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение и вызов функций
  2. Аргументы по умолчанию и именованные аргументы
  3. args и kwargs
  4. Возвращаемые значения и область видимости
← Назад к Python Academy