Appearance
Функции
Что такое функции (урок на 1 ч)
- Зачем нужны, преимущества повторного использования, инкапсуляция
Область видимости и пространство имён (урок на 1 ч)
- LEGB rule, глобальные и локальные переменные, global, nonlocal
Функции без параметров (урок на 1 ч)
Повторяющиеся части кода
Именование частей кода
Вызываемые части кода
Функции без параметров + return (урок на 1 ч)
Функции без параметров + return как замена print()
Функции без параметров + return как замена global
Функции без параметров + return x
- запись возврата функции в переменную
- передача возвращаемого значения функции в другую функцию print(round(52.96))
Функции без параметров + return x, y, ...
Функции с параметрами обязательные позиционными/именными (урок на 1 ч)
Функция с параметрами смысл применения def f(a, b, c): pass
Вызов функции с использованием позиционных параметров f() error
Вызов функции с использованием позиционных параметров f(2, 3, 5)
Вызов функции с использованием именных параметров f(a=2, b=3, c=5) | f(c=5, a=2, b=3)
Вызов функции с использованием позиционных и именных параметров f(2, c=5, b=3) error
Функции с необязательными параметрами по умолчанию (урок на 1 ч) def f(a=5, b=0, c=0): pass
- зачем нужны параметры по умолчанию использование их в функциях f()
Функции с обязательными параметрами и параметрами по умолчанию f(1, c=1)
Функции с обязательными и необязательными параметрами по умолчанию
Аннотации одиночных типов (урок на 1 ч) def f(a: int, b: float =0, c float | int = 0) -> int: pass
Аннотация возвращаемого значения функции
Аннотация типов обязательных параметров функций
Аннотация типов параметров функций по умолчанию
Аннотации типов коллекций (урок на 1 ч) list[str| int, float]
Аннотации типов коллекций и вложенных типов
Аннотации типов коллекций и вложенных разных типов
Аннотации типов коллекций и вложенных разных последовательностей типов
Функции с параметрами *args
Функции с параметрами **kwargs
Функции с параметрами Комбинирование всех типов параметров * (как разделитель)
Функции как объекты без/с параметрами
Лямбда-функции без/с параметрами
Функции без параметров + рекурсия
Функции с параметрами + рекурсия
Документирование функций
- docstring,
help(),inspect, автогенерация документации
Тестирование функций
Вложенные функции и замыкания
- Lexical scope, доступ к переменным внешней функции
Декораторы
- Что такое, как работают, примеры (
@staticmethod,@classmethod,@lru_cache)
Лямбда-функции
- Анонимные функции,
map,filter,sorted
Функции как объекты первого порядка
- Передача функций как аргументов, возврат функций, хранение в структурах
Функции высшего порядка
functools, композиция, каррирование
Генераторы и yield
- Отличие от return, ленивые вычисления,
next()
Асинхронные функции
async def,await, event loop,asyncio
Частичные функции и currying
functools.partial, создание новых функций на основе существующих
Тестирование функций
- Юнит-тесты,
pytest, edge cases, mock
Логирование внутри функций
logging, уровни логов, форматирование
Примеры архитектурного применения
- Функции в DDD, SRP, DI, как часть сервисов и use-case слоёв