Глава 13 · Автоматизация с помощью функций
Мини-проект — автоматизированные фигуры: новый уровень
Фигуры из главы 10 становятся настоящей переиспользуемой функцией — и подводим итоги.
Финальный проект главы: превратим повторяющийся код рисования фигур из главы 10 в настоящую функцию с аргументами.
figura_funkciya.py
def narisovat_figuru(storony, dlina):
ugol = 360 / storony
for _ in range(storony):
artist.forward(dlina)
artist.right(ugol)
narisovat_figuru(4, 100) # квадрат
narisovat_figuru(3, 100) # треугольник, без повторения кода!
narisovat_figuru(8, 60) # восьмиугольник
Сравните с главой 10
В главе 10 для каждой фигуры пришлось бы менять переменные
storony и dlina вручную перед каждым запуском. Теперь то же самое — параметры функции, и три фигуры рисуются тремя короткими строками подряд.★★★ Задача повышенной сложности
Функция с позицией
Добавьте функции параметры x, y (со значениями по умолчанию 0, 0) — чтобы можно было указать, откуда начинать рисовать фигуру.
Итоги
Что мы узнали в этой главе
def имя(параметры):определяет функцию; вызовимя(аргументы)её запускает.returnпередаёt результат функции наружу — это не то же самое, чтоprint()внутри функции.- Параметрам можно задать значение по умолчанию;
*argsпринимает произвольное число аргументов. - Переменные внутри функции — локальные; переменные вне всех функций — глобальные и доступны для чтения изнутри функций.
lambda— короткая безымянная функция для простых случаев, чаще всего как аргумент другой функции.