🔖 Справочник команд и синтаксиса

⚡ Краткий справочник

  • nonlocal name — связать имя с ближайшей внешней функцией.
  • func.__closure__ — кортеж ячеек захваченных переменных.
  • cell.cell_contents — значение внутри ячейки замыкания.
  • functools.partial(func, arg=value) — зафиксировать аргумент функции.
  • lambda args: expr — короткая анонимная функция.

Ключевые слова

Ключевое словоОписаниеПример
nonlocal Указывает, что переменная принадлежит ближайшей Enclosing-области nonlocal count
global Указывает, что переменная принадлежит глобальной области global total
lambda Создаёт анонимную функцию lambda x: x * 2

Атрибуты функций

АтрибутОписаниеПример
func.__name__ Имя функции 'multiplier'
func.__doc__ Строка документации 'Factory function.'
func.__closure__ Кортеж ячеек замыкания или None (<cell at ...>,)
cell.cell_contents Значение, хранимое в ячейке замыкания cell.cell_contents

Стандартная библиотека

Функция/классОписаниеПример
functools.partial(func, *args, **kwargs) Создаёт новую функцию с частично зафиксированными аргументами double = partial(mul, 2)
operator.mul(a, b) Умножение двух объектов operator.mul(2, 3) # 6

Правила использования

  • nonlocal поднимается только до ближайшей внешней функции, не до глобальной области.
  • Если переменная только читается, nonlocal не нужен — правило LEGB найдёт её само.
  • Замыкание «живёт», пока живёт возвращённая внутренняя функция. Сборщик мусора не удалит захваченные переменные.
  • Для простых фабрик вместо ручного замыкания можно использовать functools.partial.
Проверить по документации: полное описание functools.partial — в документации functools.