Различия между версиями 2 и 3
Версия 2 от 2020-09-30 01:25:16
Размер: 6905
Редактор: FrBrGeorge
Комментарий:
Версия 3 от 2020-09-30 02:45:19
Размер: 3719
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
Содержимое страницы «LecturesCMC/PythonIntro2020/Prac/04_FunctionsClosure». = 04. Функции и замыкание =
Строка 3: Строка 3:
[[#A.2BBBQ-.2F.2BBBc-]]

Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
                                              30 31
       Апрель Май Июнь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
                                                                  
        Июль Август Сентябрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1 2 3 4 5 6
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
                       31
       Октябрь Ноябрь Декабрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
          1 2 3 4 1 1 2 3 4 5 6
 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 1Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
                                              30 31
       Апрель Май Июнь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
                                                                  
        Июль Август Сентябрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1 2 3 4 5 6
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
                       31
       Октябрь Ноябрь Декабрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
          1 2 3 4 1 1 2 3 4 5 6
 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 1Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
                                              30 31
       Апрель Май Июнь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
                                                                  
        Июль Август Сентябрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
       1 2 3 4 5 1 2 1 2 3 4 5 6
 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
                       31
       Октябрь Ноябрь Декабрь
Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс Пн Вт Ср Чт Пт Сб Вс
          1 2 3 4 1 1 2 3 4 5 6
 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
3 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
3 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
 * Функция как именованная запись алгоритма
  * duck typing
  * пространство имён и pythontutor.com
   * вызов одной функции из другой
   * {i} написать примитивно-рекурсивную функцию на 4 вызова, пронаблюдать как она работает
  * <!> (придумать) Задача_0. Простая задача типа «написать функцию, в потом проверить её»
  * лямбда-функции (функции-выражения)
   * как работает `sorted(…, key=fun)`
   * {i} переписать ''Задачу_2'' из прошлого семинара в однострочник с использованием `sorted()`:
    ввести и отсортировать по возрастанию ключей числовой список, в качестве ключа сравнения использовать остаток от деления x2 на 100
  * <!> (если надо — пере/доформулировать) Задача_1: Написать функцию вычитания двух объектов, которая должна, помимо вычитания того, что и так вычитается, вычитать некоторые хранимые последовательности (по правилам множеств, т. е. если элемент есть в вычитаемом хотя бы раз, то он не встречается в разности); порядок элементов и тип результата должен быть сохранён. В качестве примера вычесть целые, вещественные, множества, кортежи и строки.
   * Подсказки:
    * составить множество типов последовательностей, для которых нужно имитировать вычитание, и проверять в нём
    * как работает `type(object)()`?
    * строка обрабатывается чуть-чуть не так (но есть вариант, когда так же)
  * <!> (доформулировать) Задача_2 (на рекурсию): Реализовать функцию бинарного поиска в упорядоченной индексируемой хранимой последовательности
   * Проверить её на строках и кортежах
 * Замыкание: как образуется, почему изнутри это не так просто, как снаружи?
  * Разбор примера про adder-ы из лекций
 * {i} Функуционал: на вход две функции от одной переменной (`f(x)` и `g(x)`) , на выходе — ''функция'' от одной переменой `h(x)=f(x)+g(x)`
 * <!> Задача_3: Функционал-еval()-ище. Написать функцию `calc(s, t ,u)`, которой передаются три строки. Каждая строка — это формула; `s` и `t` — над одной переменной `x`, а `u` — над двумя переменными `x` и `y`. Возвращается ''функция'', которая по заданному `x` вычисляет `u(s(x), t(x))`.
  * Например, `calc("x", "2*x+1", "x/y")` должно возвращать функцию, которая вычисляет $$x / {2x+1}$$

04. Функции и замыкание

  • Функция как именованная запись алгоритма
    • duck typing
    • пространство имён и pythontutor.com
      • вызов одной функции из другой
      • {i} написать примитивно-рекурсивную функцию на 4 вызова, пронаблюдать как она работает

    • <!> (придумать) Задача_0. Простая задача типа «написать функцию, в потом проверить её»

    • лямбда-функции (функции-выражения)
      • как работает sorted(…, key=fun)

      • {i} переписать Задачу_2 из прошлого семинара в однострочник с использованием sorted():

        • ввести и отсортировать по возрастанию ключей числовой список, в качестве ключа сравнения использовать остаток от деления x2 на 100
    • <!> (если надо — пере/доформулировать) Задача_1: Написать функцию вычитания двух объектов, которая должна, помимо вычитания того, что и так вычитается, вычитать некоторые хранимые последовательности (по правилам множеств, т. е. если элемент есть в вычитаемом хотя бы раз, то он не встречается в разности); порядок элементов и тип результата должен быть сохранён. В качестве примера вычесть целые, вещественные, множества, кортежи и строки.

      • Подсказки:
        • составить множество типов последовательностей, для которых нужно имитировать вычитание, и проверять в нём
        • как работает type(object)()?

        • строка обрабатывается чуть-чуть не так (но есть вариант, когда так же)
    • <!> (доформулировать) Задача_2 (на рекурсию): Реализовать функцию бинарного поиска в упорядоченной индексируемой хранимой последовательности

      • Проверить её на строках и кортежах
  • Замыкание: как образуется, почему изнутри это не так просто, как снаружи?
    • Разбор примера про adder-ы из лекций
  • {i} Функуционал: на вход две функции от одной переменной (f(x) и g(x)) , на выходе — функция от одной переменой h(x)=f(x)+g(x)

  • <!> Задача_3: Функционал-еval()-ище. Написать функцию calc(s, t ,u), которой передаются три строки. Каждая строка — это формула; s и t — над одной переменной x, а u — над двумя переменными x и y. Возвращается функция, которая по заданному x вычисляет u(s(x), t(x)).

    • Например, calc("x", "2*x+1", "x/y") должно возвращать функцию, которая вычисляет $$x / {2x+1}$$

Д/З

Here

LecturesCMC/PythonIntro2020/Prac/04_FunctionsClosure (последним исправлял пользователь FrBrGeorge 2020-10-07 18:54:34)