Функциональное программирование на Python

preview_player
Показать описание
Курс из 15 занятий, читается весной 2021 года в МФТИ, школа ЛФИ, 2 курс.
Тема 2-го занятия: Функциональное программирование на Python.

Рекомендации по теме
Комментарии
Автор

Предлагаю помочь Тимофею 7 лет из Набережных Челнов восстановить ухо:

tkhirianov
Автор

Тайм-коды: итераторы, генераторы, map(), лямбда-функции, цикл for, range, list comprehension
0:00 Языки Программирования: 1. - императивные (ООП в т.ч.), 2. - функциональные, 3. - логические (Prolog)
3:30 определение Алгоритм. Алгоритм - это вычислимая функция
Алгоритм - это последовательность команд, означающих действие, на формальном языке исполнителя, ведущая к цели за конечное время
4:50 Императивные языки: блок-схемы, ассемблер, машинные коды, в которых чётко, строго определена последовательность действий
6:55 Функциональное программирование: не надо описывать последовательность действий
10:45 логическое программирование: последовательность действий тоже не определена и не задана, но вся программа описывается логическими предикатами
11:25 между императивными и функциональными языками есть некое взаимодействие
12:13 в чистых функц. языках Нет Переменных. Есть: функции, константы и локации. Нет: переменных, присваивания, массивов, изменяемых структур данных, циклов while
16:01 Код. Погружение в функц. программирование
21:20 циклы и рекурсия взаимозаменяемы
22:31 Код. Черепашка. def go-snowy()
24:23 чистые функции и не чистые (pure function и non-pure function). Не-чистые функции подразумевают действия. Чистые - математические
31:42 Итерируемые объекты. Последовательности
32:02 4 вида функций: 1-ф: получает конкретное число параметров, возвращает жёство фиксированное количество чисел
33:47 def f (a, b, c) функция, которая возвращает вектор значений (кортеж)
36:02 2-ф: функция, которой мы даём 1 значение, а она выплёвывает нам серию. Функция - генератор
40:35 3-ф: reduce() как аккумулятор. Входящий - последовательность, возвращает - 1. Редуктор, индуктивные функции
44:19 4-ф: функции обработки последовательности -> последовательности поэлементно
46:05 Код. Как передать несколько параметров в функцию
48:42 generator object Когда именно вычисляется итерируемый объект (f(x) for x in A)
54:21 2 способа применить функцию в параметр: 1) использовать генератор, 2) функция map. Это функтор. Функция высшего порядка. В параметр функции подаётся функция. Функция в качестве объекта. Функция(объект) первого рода. В результате вычислений может появиться новая функция, которую можно return
57:53 Вычислительный процесс
59:28 Код. Пример: функция с параметром-функцией. def double_performer(f). Функции-функторы
1:04:46 map(func, *iterables) -->map object. Т.е. применение какой-то конкретной функции f ко всем элементам итерируемого объекта А: map(f, A)
1:07:17 есть возможность осуществлять фильтрацию в итератерах: condition filter
1:08:45 генератор умеет и maping и filtering одновременно
1:08:56 Код. range(start, stop, step) - это не список, не массив, это объект. type(range()). Арифметическая прогрессия, которая вычисляет числа ровно в тот момент, когда к нему обратились
1:13 39 Лямбда-функции. Безымянные функции. lambda x : x*x == def f(x): return x*x, только без идентификатора f
1:18:35 Питон является мультипарадигменным языком, он не бьет по рукам при смене подхода
1:21:06 Презентация. Функциональное программирование. 1) итерируемые объекты, 2) генераторы и итераторы, 3) принцип работы for, 4) объект range, 5) ключевое слово yield, 6) генераторы itertools, 7) сопроцессы, 8) работа с файлами
1:21:34 Итерируемые объекты. Списки, срезы, удаление, строки, кортеж (без круглых скобочек будет все равно именно tuple), сравнение
1:22:15 id() - идентификатор
1:24:11 словари - это хэш таблица, завернутая уже в Питоне в готовый объект. В ней ключам соответствуют значения. Ключи могут быть разного типа, лишь бы они были бы хешироабельными (можно было бы вычислить хэш-сумму от них) Значения - изменяемы, ключи - нет
1:25:07 zip(iter, iter)
1:25:43 конструкторы списков, кортежей умеют кушать итерируемые объекты в качестве параметра
1:27:38 i = iter(C) доить итерируемый объект не доильным автоматом (for), а руками по одной
next(i) Созданный ранее объект одноразовый, потому что делается на лету
1:30:30 цикл for позволяет сразу распаковывать zip() (бежать сразу парой переменных по списку кортежей
1:31:04 enumerate("HELLO"). Возвращает - кортежи (итер. объект, прицепляя к нему нумерки)
1:34:46 генераторы и итераторы
1:36:10 генератор - это частный случай итерируемых объектов
1:37:43 Код. arithm_progression(start, stop, step) - генератор. yield вместо return выдаёт всего 1 следующее значение и засыпает
Сопрограмма - вычисление отложенных до того момента, когда реально понадобились значения, а не пытается сохранить все их в памяти
1:46:07 принципы работы for, List Comprehensions
1:46:25 функции библиотеки NumPy Arange(), Linspace()
1:47:58 генерация диапазона с плавающей запятой без использования сторонних модулей
1:48:09 генераторы библиотеки itertools. count, cycle, repeat, accumulate, combinations, compress, dropwhile
1:49:36 Код. permutation, groupby
1:50:56 Код. starmap, tee, zip_longest
1:52:07 Сопроцессы = сопрограммы (не параллельно, а перебрасывая друг другу выполнение)
1:52:34 работа с файлами
1:53:37 Практическая часть.
1:55:41 Код. reduce() в библиотеках functools, itertools

iritaka
Автор

Знаком с Python 2 года. За это время просмотрел множество курсов, но только после Ваших лекций начал понимать как работают функции, которыми давно пользуюсь. А некоторыми не пользовался потому что не понимал как они работают. Благодарю Вас за наилучшее объяснение материала!!! Завидую Вашим студентам очной формы!!!

nazar_z_
Автор

Большое спасибо за бесплатное образование вам и университету. В наше время мало кто готов на такое пойти.

Toksi
Автор

"Фонарик в небо поднимал? В автозак" - очень сильно! Респект

allyouneedisbot
Автор

Уважаемый Тимофей Фёдорович! Огромное Вам спасибо! Вы преподаватель от Бога, здоровья Вам и удачи!!!

BlackShadow_
Автор

испытываю радость и удовольствие от лекций Тимофея. спасибо огромное за ценный материал и возможность изучать Python!

tobemaguire
Автор

Кстати, а будет курс по нейронным сетям? В исполнении Тимофея очень хотелось бы посмотреть и послушать.

kpsafezone
Автор

Присоединяюсь к тем, кто говорит спасибо, ваши труды хорошо заходят после тяжелого дня, надеюсь, вы не бросите.

Antoniolavoisier
Автор

Я изучаю программирование и мне 43. Часто, когда падает мотивация к обучению, я смотрю ваш канал. "доить" и "жмякать" взял на вооружение. Спасибо Вам Тимофей!

sklvvuz
Автор

В мире, когда в мире IT многие знают о многом понемногу без хороших базовых знаний, этот препод - жемчужина. Чувак, я тебя люблю :)!

pypypy
Автор

"Нет переменных, нет присваивания ... нет ножек )))"
Оч улыбнуло) 13:50

popcorni
Автор

1:07:47 Шикарный пример с фонариком! )) Тимофей Фёдорович, шикарно!

Markisi
Автор

Вот пришел человек, и все объяснил) Не могу выразить словами свою благодарность!

it_is_muchomor
Автор

Крутые лекции, за товарища майора отдельный лайк

vizII
Автор

Спасибо Тимофей, вывел для себя некоторые вещи. Спасибо что вы есть.

fcwvlnc
Автор

Урок 1 - 1 час, урок 2 - 2 часа, боюсь дальше смотреть)) Спасибо, за то что выкладываете материал!

TheRedesc
Автор

Entertaining and educational! Thank You, Mr. Khyranov.

gladator
Автор

Великий учитель. Аристотель программирования. Учитесь думать - а затем поступать. 🔥🔥🔥

jglxssu
Автор

Вообще не имею отношения к программированию, но залип на 40 минут))
Вы очень захватывающе рассказываете!

utjmdrw