Различия между версиями 8 и 9
Версия 8 от 2017-10-15 20:09:01
Размер: 2899
Редактор: FrBrGeorge
Комментарий:
Версия 9 от 2017-10-15 20:33:50
Размер: 2841
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 59: Строка 59:
----
'''TODO'''
 * /!\ рекуррентная последовательность (генератор)
 * <<EJCMC(86, GenMult, Повторитель)>>

Функции и генераторы

Разбор Д/З №2

Условное выражение A if C else B

Цикл for: повторение

  • iter(объект) → объект-итератор (.__getitem__() или .__iter__())

  • next() и StopIteration

  • range(), reversed(), enumerate(), zip()

Кстати, zip() не было, а зря!

Функции

Пространства имён: повторение

  • Задание функции: формальные и фактические параметры, return

  • Duck typing: функция как формализация алгоритма

  • функция как локальное пространство имён

    • определение локальности по связыванию, global

    • nonlocal для вложенных функций

  • функция как объект: именование, передача в качестве параметра
  • лямбда-функции (функции-выражения)

Распаковка и запаковка последовательностей

  • при связывании
  • в цикле for

  • при передаче параметров в функцию
    • распаковка
    • запаковка
    • функция с произвольным числом параметров

Генераторы

Повторно-входимые функции as is

Pуthon3: генераторы

  • Задание: yield

  • Принцип работы
  • это же итератор!

Параметрические итераторы:

  • a = yield b, первый p0 = next(gen), дальше pk = gen.send(a)

== Itertools = Если успеем

py2lib:itertools.html

Неполные вычисления (например, с бесконечными итераторами)

Полезности: комбинаторика, повторители, …

Д/З

  • {i} Прочитать про функции, итераторы и генераторы в учебнике

  • Как одним print()-ом вывести все элементы произвольного кортежа Python3 через пробел?

  • Придумать пример «из жизни» для вложенного задания функции
  • EJudge: Det4x4 'Определитель матрицы 4×4'

    Матрица 4×4 задаётся кортежем из 4 кортежей по 4 целых числа в каждом. Посчитать определитель этой матрицы. Допустимо заранее составить (а не вычислять на ходу) последовательность из всех перестановок индексов и знаков этих перестановок.

    Input:

    (5, -4, 4, -7), (1, -2, 6, 0), (3, -8, -6, -4), (-1, 2, -9, 3)
    Output:

    702
  • EJudge: EvalFunction 'Сложение и умножение'

    Ввести строку, содержащую выражение ЯП Python3. В строке, помимо стандартных действий над объектами, может встречаться вызов функции Add(a,b) (возвращает сумму a и b) и Mul(a,b) (возвращает произведение a и b). Вычислить и вывести значение этого выражения.

    Input:

    Mul(Add(-2,5),Add((1,2),(100,500)))[3:]
    Output:

    (500, 1, 2, 100, 500, 1, 2, 100, 500)
  • EJudge: IterPi 'Расстояние от Пи'

    Пользуясь формулой Лейбница для вычисления числа Пи:

    • LeibnitzPi.png

    написать бесконечный генератор pigen(), возвращающий последовательно 4, 4-4/3, 4-4/3+4/5, …; ввести некоторое расстояние E и вывести номер элемента этой последовательности, первым попадающего в E/2-окрестность числа Пи. Внимание! Тесты написаны из расчёта, что проверка такая: как только очередное значение pigen() по модулю перестанет отличаться от предыдущего значения больше, чем на E, выводим, на каком обороте цикла это произошло.

    Input:

    0.001
    Output:

    2000

LecturesCMC/PythonIntro2017/04_Functions (последним исправлял пользователь FrBrGeorge 2017-10-26 15:48:57)