Глава 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 — короткая безымянная функция для простых случаев, чаще всего как аргумент другой функции.