Различия между версиями 10 и 11
Версия 10 от 2018-09-26 13:26:40
Размер: 5548
Редактор: FrBrGeorge
Комментарий:
Версия 11 от 2018-09-26 13:27:30
Размер: 5546
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
  * функция — это просто объект    * функция — это просто объект
Строка 49: Строка 49:
  * Треугольники по вершинам квадрата    * Треугольники по вершинам квадрата
Строка 112: Строка 112:
   * Вызов этой функции (мы её передаём в качестве параметра функцию, которая будет рисовать это самое ''что-то'')    * Вызов этой функции (мы ей передаём в качестве параметра функцию, которая будет рисовать это самое ''что-то'')

Повторное использование кода

  • Функция Python3 как именованный алгоритм
    • Отличие от функции в строгом смысле (преобразование данных определённого типа в данные (другого?) определённого типа)
  • Задание и вызов функции, блок-со-сдвигом
    • функция — это просто объект
    • правда, он callable() (но бывают и другие callable-объекты)

      • т. е. объект, который можно вызвать с помощью объект()

    • Какие callable-объекты нам уже известны (например, типы, bin(), print() и т. п.)

    • Формат задания функции, синтаксически значимый сдвиг
  • Параметры функции
    • Формальные: имена в описании
    • Фактические: выражения при вызове
  • Возвращаемое значение функции
    • и его неиспользование
  • Суперпозиция функций
  • «Утиная типизация»: все объекты строго типизированы, но по имени этого не скажешь
    • ⇒ функция выполнится, если все операции в ней применимы к переданным объектам
  • Локальные и глобальные имена, правила видимости
    • Время жизни локальных имён (формальных параметров и собственно локальных имён)
    • locals()

    • Загораживание глобальных имён локальными
    • Проблема «побочного эффекта»: разрешать или не разрешать связывание с помощью глобальных имён внутри функции:
      1. Есть связывание ⇒ имя локальное
      2. global

    • Пример

    • Строка документации, help(функция)

Пример: черепашья графика

  • основные команды

  • Равносторонний треугольник
       1 def trg():
       2     fd(100)
       3     lt(120)
       4     fd(100)
       5     lt(120)
       6     fd(100)
       7     lt(120)
    
  • Равносторонний треугольник с заданной стороной
       1 def trgS(size):
       2     fd(size)
       3     lt(120)
       4     fd(size)
       5     lt(120)
       6     fd(size)
       7     lt(120)
    
  • Треугольники по вершинам квадрата
       1 def trgsq():
       2     trgS(10)
       3     lt(90)
       4     penup()
       5     fd(100)
       6     pendown()
       7     trgS(10)
       8     lt(90)
       9     penup()
      10     fd(100)
      11     pendown()
      12     trgS(10)
      13     lt(90)
      14     penup()
      15     fd(100)
      16     pendown()
      17     trgS(10)
      18     lt(90)
      19     penup()
      20     fd(100)
      21     pendown()
    
  • Квадрат с заданной стороной и окружность с заданным радиусом
       1 def sqrS(size):
       2     fd(size)
       3     lt(90)
       4     fd(size)
       5     lt(90)
       6     fd(size)
       7     lt(90)
       8     fd(size)
       9     lt(90)
      10 
      11 def crcS(size):
      12     circle(size)
    
  • Что-то по вершинам квадрата (передаём функцию!)

       1 def smthSQ(size, funct):
       2     funct(size)
       3     pu()
       4     fd(100)
       5     lt(90)
       6     pd()
       7     funct(size)
       8     pu()
       9     fd(100)
      10     lt(90)
      11     pd()
      12     funct(size)
      13     pu()
      14     fd(100)
      15     lt(90)
      16     pd()
      17     funct(size)
      18     pu()
      19     fd(100)
      20     lt(90)
      21     pd()
    
    • Вызов этой функции (мы ей передаём в качестве параметра функцию, которая будет рисовать это самое что-то)

         1 smthSQ(15, trgS)
         2 pu()
         3 goto(-100,-100)
         4 pd()
         5 smthSQ(20, sqrS)
         6 pu()
         7 goto(100,100)
         8 pd()
         9 smthSQ(25, crcS)
      
  • Редизайн: когда поднимать и опускать перо? (TODO)

Д/З
Функции и черепашка
  • Прочитать и прощёлкать третью главу учебника

  • Прощёлкать примеры из документации по turtle

  • Ввести три числа — стороны существующего треугольника, вывести его площадь (Формула_Герона)

  • Нарисовать домик (с помощью функций «треугольник» и «прямоугольник»)
    • +задать в качестве параметра размер и цвета стен и крыши
    • +с окном и дверью
    • +… ;)

Python/PsyPython2018/03_Functions (последним исправлял пользователь FrBrGeorge 2018-10-02 01:19:18)