- 44
- 85 299
Python Clinic
Registrace 8. 03. 2023
Привет, меня зовут Никита Царевич, и я в IT больше 10 лет. Я занимаюсь архитектурой, управляю командами, но в первую очередь я инженер-программист. Уже несколько лет веду курсы по Python, и знаю, как и чему обучать людей с разным бэкграундом и опытом. Могу рассказать о Python и программировании так, что даже babushka поймёт.
Анализ данных на Python (pandas, matplotlib): кто имел больше шансов выжить на Титанике
Смотрим на известный датасет исторических данных о катастрофе на Титанике, который можно найти здесь - www.kaggle.com/competitions/titanic
Таймкоды:
00:00 - обзор датасета и гипотеза
03:03 - основы pandas
05:33 - средние цены на билеты
07:24 - классы билетов
08:26 - нехватка данных
09:28 - удаляем "плохие" записи
09:48 - дополняем "плохие" записи
11:47 - распределение цен
15:45 - группировка по классу, возрасту и полу
16:43 - простой вывод
Таймкоды:
00:00 - обзор датасета и гипотеза
03:03 - основы pandas
05:33 - средние цены на билеты
07:24 - классы билетов
08:26 - нехватка данных
09:28 - удаляем "плохие" записи
09:48 - дополняем "плохие" записи
11:47 - распределение цен
15:45 - группировка по классу, возрасту и полу
16:43 - простой вывод
zhlédnutí: 252
Video
Пишем доморощенный веб сервер на Python
zhlédnutí 438Před 21 dnem
в этом видео я опишу процесс создания и работы очень простенького веб сервиса с помощью модуля socket
Деревья на Python: бинарное дерево поиска (BST), красно-чёрное (BRT)
zhlédnutí 525Před měsícem
Разбираемся с тем, как устроены разные виды деревьев и конечно же реализуем их на Python. Таймкоды: 00:00 - задача о директориях 04:24 - решаем через дерево 08:58 - определения и термины 16:25 - простейшее дерево 19:51 - бинарное дерево поиска 25:18 - реализация бинарного дерева поиска 30:11 - кривое дерево 38:00 - красно-чёрное дерево 45:20 - повороты 48:36 - алгоритм вставки 55:15 - уже не та...
Как устроены хэш таблицы и словари на примере Python (hash table / dict)
zhlédnutí 965Před 3 měsíci
Что там под капотом у типа dict? Что такое хэш функция? Можно ли избежать коллизий? Ответы в этом видео. Мы продолжаем разбираться со структурами данных на примере Python, как всегда, если у вас есть вопросы или предложения, смело пишите обо всём в комментариях. Таймкоды: 00:00 - подсчёт слов в тексте двойным циклом 01:59 - вариации подсчёта через словарь 08:36 - устройство хэш таблицы и хэш фу...
Стек/stack и очередь/queue в PYTHON
zhlédnutí 1KPřed 5 měsíci
Привет, в этом видео я расскажу о двух структурах данных, которые лежат в основе самого программирования, это stack/стек и queue/очередь. Посмотрим на разные реализации в Python, на задачи с интервью и практические примеры. Как всегда можете смело задавать вопросы в комментариях. 00:00 - задача с интервью 03:12 - решение с “депо” 10:54 - stack/стек 11:53 - queue/очередь 12:50 - формальный интер...
Большое О - ассимптотическая оценка сложности алгоритмов
zhlédnutí 1,3KPřed 6 měsíci
При проектировании решений мы стремимся к максимальной эффективности. Понимание сложности алгоритмов и умение их сравнивать критически важно для подбора наиболее эффективного решения, поэтому понимать принципы ассимптотической оценки - очень важно. Даже если вы считаете, что все алгоритмы уже написаны, а chatGPT подскажет решение в любой ситуации. Таймкоды: 00:00 - пример вопроса с интервью и к...
РеКуРсИя в Python (стэк вызовов, оптимизация хвоста и альтернативы)
zhlédnutí 877Před 7 měsíci
Чтобы понять рекурсию, нужно понимать рекурсию, пока не поймёшь рекурсию. Тайм коды: 00:00 - интро 00:25 - что считать рекурсией 03:38 - сквозная сумма списка 08:11 - стэк вызовов 17:58 - хвосты и оптимизация 23:15 - Гвидо не хотел оптимизировать 26:13 - немного о быстродействии и удобстве 28:35 - замена на очередь 33:50 - ну и всё
Приципы SOLID и PYTHON - подробный разбор на практике
zhlédnutí 3,3KPřed 8 měsíci
Давно обещал выпустить это видео, и вот время пришло. Здесь будет подробный разбор применения техник SOLID в Python. Пример, как и само видео, будет достаточно сложным, так что не переживайте, если не получится всё это ухватить с первого раза, ну и не стесняйтесь задавать вопросы в комментариях. Так же в конце есть небольшая секция, где я делюсь своими мыслями о будущем этого канала. Таймкоды: ...
Методы классов в Python
zhlédnutí 1,3KPřed rokem
Объясняю в чём разница между classmethod и staticmethod в python, и немного рассказываю о том, где эти декораторы применяются, а где можно обойтись и без них. Вообще пайтон настолько гибкий, что в целом без них моджнобыло бы обойтись везде, но они дают нам немного дополнительного контроля над тем, как и где эти методы вызываются и переопределяются. Таймкоды: 00:00 - интро 00:22 - методы класса ...
Асинхронность в python
zhlédnutí 3,4KPřed rokem
Рассказываю о том, что вообще такое асинхронность, и как она реализована в python. Видео получилось очень поучительным, сразу понятно, что асинхронность это не серебряная пуля, а скорее осиновый кол, который нужно долго и методично строгать перед использованием. Таймкоды: 00:00 - интро 00:15 - что вообще такое асинхронность 07:20 - многопоточность? 09:02 - async 11:47 - await 13:28 - asyncio 15...
Абстрактные классы в Python
zhlédnutí 3,5KPřed rokem
Разбираемся с тем, как работает abstract base class или abc. Абстрактные классы позволяют в явном виде заставить дочерние классы переопределять поведения родителей, за счёт этого мы можем строить более гибкие иерархии наследования. Таймкоды: 00:00 - интро 01:06 - интерфейсы 04:17 - абстрактные классы 05:33 - необходимые инструменты 09:16 - расширяем дочерние классы 10:55 - результат 11:59 - аутро
Потоки ненастоящие? GIL в Python
zhlédnutí 1,6KPřed rokem
В этом видео мы разоблачим иллюзию относительно быстроты работы потоков в Python. GIL превращает все объекты в потокобезопасные, но платим за это мы производительностью, и на самом деле потоки очень редко работают по-настоящему параллельно. Разбираемся, в каких ситуациях их можно использовать с выгодой. Канал в тг, где я делюсь своими мыслями по видосам и не только - t.me/PythonClinicChnl Таймк...
Множественное наследование и алгоритм MRO в Python
zhlédnutí 1,9KPřed rokem
Пришло время поговорить о множественном наследовании в Python. Проблема множественного наследования на концептуальном уровне это конфликты. В пайтон они разрешаются с помощью алгоритма MRO, который стоит понимать, с тем чтобы правильно строить иерархии наследования и переиспользовать родительское поведение. Так же коротко рассказываю о принципе работы метода super(). Таймкоды: 00:00 - проблема ...
Потоки в Python
zhlédnutí 1,2KPřed rokem
Смотрим на интерфейс работы с потоками и сравниваем его с аналогичными инструментами для процессов. Заодно проверили и производительность тоже. Основной вывод - потоки (в Python и по жизни) стоит использовать для распараллеливания простейших задач, либо вещей которые зависят от IO. Для сложных вычислений лучше использовать всё же процессы. Группа в тг - t.me/PythonClinicChnl Таймкоды: 00:00 - и...
Механизм наследования в Python
zhlédnutí 1KPřed rokem
Как и всегда нас будет интересовать то, что происходит при наследовании под капотом - как работает типизация, как происходит "перенос" атрибутов и методов, как мы можем расширять поведение дочерних классов. Даже в простейшем случае линейного наследования можно поломать механику работы с проперти, если не соблюсти определённые правила, которые как раз зависят от этой механики. Канал в тг, где я ...
Борьба за ресурсы между процессами Python
zhlédnutí 535Před rokem
Борьба за ресурсы между процессами Python
Разбор байткода Python с помощью модуля dis
zhlédnutí 686Před rokem
Разбор байткода Python с помощью модуля dis
Pool процессов в Python - параллельность и асинхронность
zhlédnutí 1,7KPřed rokem
Pool процессов в Python - параллельность и асинхронность
Дескрипторы в Python - максимальная инкапсуляция
zhlédnutí 2,7KPřed rokem
Дескрипторы в Python - максимальная инкапсуляция
Компиляторы, интерпретаторы и когда всё-таки интернируются строки
zhlédnutí 947Před rokem
Компиляторы, интерпретаторы и когда всё-таки интернируются строки
Сборка мусора (garbage collection) в Python
zhlédnutí 3,5KPřed rokem
Сборка мусора (garbage collection) в Python
Properties в Python - во-первых это красиво
zhlédnutí 1,6KPřed rokem
Properties в Python - во-первых это красиво
Python не тратит ни одного лишнего байта
zhlédnutí 1,7KPřed rokem
Python не тратит ни одного лишнего байта
ОГРОМНЫЙ обзор и сравнение PyCharm и Visual Studio Code
zhlédnutí 10KPřed rokem
ОГРОМНЫЙ обзор и сравнение PyCharm и Visual Studio Code
Изменяемость объектов с точки зрения управления памятью в Python
zhlédnutí 1,3KPřed rokem
Изменяемость объектов с точки зрения управления памятью в Python
Надо же было сравнить с проф версией
всё честно, сравниваем бесплатные версии))
@@pythonclinic Думаю было бы полезно рассмотреть в контектсе, когда для тебя не проблема купить лицензию. Тем более, получить проф версию очень легко, есть много способов на ютубе
в целом можно сделать отдельное видео, да
Привет, крутое видео , но может что-то посложнее возьмём. А так очень полезно наверное
можно и посложнее) вообще хотелось проверить интерес аудитории к теме более-менее простым обсуждением
Долгих лет тебе жизни
Спасибо за видео! Интересно было бы послушать развитие темы про интерфейсы. На канале есть видео про абстрактные классы, но хотелось бы послушать про их сравнение с Protocol из typing. Что и когда использовать. Отсюда оттолкнуться и рассказать про Dependancy Injection (можно на примере punq). Было бы прикольно.
запишу себе в список)
Отличный урок!
Немного не тему,но ты сильно похож на "Аньяна" из мультфильма "я,николя".Спасибо за видео!
действительно похож, это забавнно)
@@pythonclinic хаха
Круто, спасибо за разбор! И было бы действительно очень интересно с машинным обучением посмотреть похожие видео
вас понял)
Круто
Какой чёрт заставляет вас добавлять музыку?
канал отличный! было бы классно иметь возможность иметь такого наставника как вы:)
спасибо за отзыв)
Очень хороший материал
Спасибо за представление, было оригинально и познавательно.
я тут проверила на практике перезапись кортежи получилось, что это работает и для очень больших кортежей (len 20000) а еще это работает для списков и у меня вот вопрос, а для списков исп-ся free-list или все это результат уже каких то других механизмов оптимизации? типо используются последние освободившиеся блоки в пуле? что характерно первые ~50 списков имеют разные id, а потом id внезапно начинают повторяться (некоторые просто подряд) py 3.9, а то мб все уже поменялось
да, этот процесс сложно отследить в ходе простых экспериментов, не прибегая к анализу самой памяти и free-list но вообще да, просто используются последние освобождённые блоки, это самый важный принцип работы интерпретатора с памятью, ну и могу предположить что как раз после создания условных 50 списков (тут важно и время, и количество объектов) у тебя начинает работать сборщик мусора, что и приводит к освобождению этих блоков
@@pythonclinic т е список freeblock в пуле все таки работает по принципу стека? а то я из 1го видео подумала, что там очередь
да, там скорее стек, это соответствует базовому принципу - чем дольше объект просуществовал в памяти, тем больше шанс, что он ещё понадобится
@@pythonclinicспасибо за исчерпывающий ответ) очень интересно у python там все устроено!
Все круто! Подскажите, пожалуйста, а где вы преподаете? Как можно найти?
спасибо) я преподаю онлайн в Минской IT Academy, курс по разработке web приложений на Python + очно веду курс по алгоритмам и структурам данных на специальности "информатика" в EHU в Вильнюсе
С одной стороны просто, с другой - здорово пощупать как это работает
Спасибо, очень интересно. Спасибо что без музыки, досмотрел до конца.
Как всегда обед Как всегда твое видео Огромное спасибо.
частично молодец, но у меня чувство что автор максимум мидл разработчик. Причина проста - for_with_range работает еще медленнее, ну конечно, вы же добавили дополнительную операцию создания списка, что в случае с for просто вынесено за предел функции. дальше - while работает медленнее потому что он низкоуровневый? нет, явно не потому. там вы банально делаете больше операций def while_loop_1(l): start_time = perf_counter() i = 0 while i < len(l): l[i] += 1 i += 1 end_time = perf_counter() elapsed_time = end_time - start_time print(f"Elapsed time: {elapsed_time:.6f} seconds") Elapsed time: 0.016325 seconds слегка оптимизируем def while_loop_2(l): start_time = perf_counter() i = 0 n = len(l) # Pre-calculate the length of the list to avoid recalculating it in each iteration while i < n: l[i] += 1 i += 1 end_time = perf_counter() elapsed_time = end_time - start_time print(f"Elapsed time: {elapsed_time:.6f} seconds") Elapsed time: 0.011326 seconds так что, неверно изложена причина, почему что-то работает медленнее а что-то быстрее. Надеюсь вам будет полезно, а может и кто-то прочтет мой коммент и разберется)
Очень нудно! Не смог даже досмотреть!
Очень хорошо все объяснили! Интересно было бы еще послушать про паттерны/методологию проектирования, про SOLID и eafp/lbyl было оч полезно! а если более приземленно, то про типизацию (аннотацию типов, typing,pydantic?, дженерики и тп).. юнит-тестирование, логгирование.. Короче, в исполнении профессионала все интересно) А еще момент, мб стоит такие длинные видео делить (например, на BST и RBT), это психологически легче воспринимается, и возможно увеличит число просмотров, а то народ возможно пугает хронометраж)
спасибо) все пожелания учитываются)
Ну хз. Только начал смотреть. Статический метод clean_folder возвращает или булеан или стринг, ну такое
пишу на spyder 🤡
моё почтение
"Читается как дек. Верьте мне" прекрасная манипуляция, почти как "не гуглите это", сразу побежала в гугл переводчик😂 ваши видео по Пайтону самые интересные и содержательные, а стиль кода глаз радует, супер!
спасибо)
Здравствуйте. Благодарю вас за отличное объяснение с прекрасными примерами. Вы рисовали в программе drawio, какой шаблон вы использовали и где его можно найти? подскажите пожалуйста
привет, спасибо за отзыв) я рисую без шаблонов, иногда просто во вкладке style включаю параметр sketch для всего документа, оно даёт такой вид
Спасибо, что выполнили мою просьбу и сняли видео по красно-черному дереву. Ох, как-то обидно за себя, я понимаю деревья теоретически, но вот попроси меня написать самостоятельно код с балансировкой деревьев, и все, все лампочки потухли. Года три назад я абсолютно не понимала рекурсию, потом просто в какой-то момент поняла, не понимала, что такое связные списки даже теоретически, теперь могу написать код, если нужно. А вот деревья так и не могу осилить. Надеюсь, что в какой-то момент в голове все так же сложится и мне станет все понятно. А такие хорошие учителя как вы, очень помогают в правильном построении нужных нейронных связей. Не знаю, так ли это, но мне показалось, что Вам было очень непросто рассказывать про деревья простым языком, но у вас получилось, ещё раз спасибо за это. Есть тема, которая наверно сейчас очень на слуху в современном мире, это ИИ. Если вы что-то сможете рассказать об этом, если вы сталкивались, может сможете рассказать про ML простым языком насколько это возможно, то будет очень здорово. Если нет, в любом случае очень жду ваших следующих видео на любую тему. P.S. и да, повторюсь, что ваши видео смотрятся на одном дыхании, так что можете делать их длиннее ;)
мы долго к этому шли) надеюсь, это по-настоящему полезно я сам пишу код на разных языках уже больше десятка лет, и всё равно остаются темы на которых начинается ступор, даже если знаешь теорию; с преподаванием и видео та же история, я очень долго ходил вокруг темы про деревья и пытался построить хотя бы структуру сценария, хоть у меня и куча опыта обсуждения этой темы со студентами, но видео это не лекция, где студенты могут накидать вопросов, если им что-то непонятно, нужно просчитывать всё наперёд по AI подумаю, у меня есть опыт работы с IR, возможно получится от этого оттолкнуться и двинуться в сторону понятного рассказа об ML
Было интересно посмотреть такое же сравнение на языке cpp (C++)😊
как же давно я на нём не писал) обещать не буду, но может когда-то и захочется сделать
Отличное видео. Так емко объяснить все, что нужно знать о такой непростой теме - это талант.
спасибо)
Спасибо. Первый раз попалось видео с примерами "было-стало" о solid. Подписался.
а когда мы в классе инициализируем дескриптор , то он обязательно точно также должен называться как и атрибут класса?
вообще это необязательно, но часто такого стиля придерживаются для лучшей читаемости
Спасибо тебе за материал!)
я уснул
копирование содержимого старого массива в более длинный новый, за O(n), без изменения содержимого, выглядит пессимистичным взглядом на вопрос. по идее, он должен, под капотом, делать это, без перебора нашего массива из n элементов, например, просто копированием из одной области памяти в другую.
а как именно должно происходить вот это вот "простое" копирование из одной области памяти в другую?) оно неизбежно будет делать это поэлементно, а даже если предположить, что мы можем копировать области памяти как единое целое, этакое ctrl+c-ctrl+v, то там тоже будет прямая зависимость от количества данных, чем больше элементов, тем дольше будет идти даже такое копирование, это и отражает зависимость O(n) в худшем случае
@@pythonclinic это будут уже не интерпретируемые O(n), а следовательно, для питона, какое-нибудь более интересное значение.
Уважение и поклон! Так четко, конкретно и доходчиво объяснять материал - шедеврально!!! Мозг, с непривычки, запузырился, кипя, но реально всё понятно, только слегка боль в черепе и все ещё что-то булькает... Класс!!! Как здорово, когда Человек - профессионал, понимает рассказываемую тему, что дает возможность реально обучать, а не читать материал как в 90% универов❤
спасибо за отзыв)
Зачем функцию clean_folder обернули в класс FolderCleaner? В случае успешного выполнения этой функции вы возвращаете False... Где логика? А в случае ошибки вообще строку... В метод базового класса добавим параметр, который там не нужен, только потому что один из дочерних классов его использует... WTF?! Ну тогда во все методы базовых классов нужно напихать параметров, а вдруг какому-нибудь дочернему классу понадобится... Ну и аннотацию типов для субклассов указали не верно.
UPD: вы в европейском университете преподаете python?
согласен, местами получилось не очень логично, слишком большой и сложный пример построил
(выглядит как начало прямой атаки, но почему бы и нет) нет, преподаю алгоритмы и структуры данных, питон это хобби
Почему учителя в школах и ВУЗах не включают во время уроков музыку, а на ютубе часто включают? Мне трудно воспринимать информацию, когда на фоне пиликает музыка.
на ютубе как-то вот так сложился консенсунс, что с музыкой веселее) мне самому тоже не всегда заходит поэтому я ситараюсь делать её максимально ненапряжной
@@pythonclinic первый раз слышу, что по этому поводу сложился какой-то консенсус. Много образовательных каналов не используют музыку.
возможно) форму моих видео в том числе определеяют зрители, пока что было много положительного фидбэка по поводу наличия музыки, если количество негативного вырастет, то я её уберу
Отличный канал! Со временем(по мере своего роста) планирую посмотреть все видео! В описании канале указано, что вы ведёте курсы. Подскажите, где можно посмотреть информацию о курсе/курсах?
привет, спасибо за отзыв) я веду курсы в минской IT Academy, оно легко гуглится если что)
Нашел, но там курс для тех кто без опыта. Что-то продвинутое есть? Для мидлов.
только дата саенс
@@pythonclinic понял, спасибо.
Большое спасибо за видео, очень информативно.
Самый крутой канал по питону!
точнее по программированию, питон просто удобнее для восприятия как язык. Продолжай и большое спасибо!
серьёзно? )))
@@andynaz7044 абсолютно, много десятков пересмотрел.
@@andynaz7044ЧСВ?
Я первый! Единственный мой канал с колокольчиком❤
❤️❤️❤️
А какие неначальные задачи можно выполнять с asyncio
класс
отличное объяснение
На канал попал по ролику об Абстрактных методах - зашло/дошло сразу. После ещё пары видосов понял что канал стоящий - надо подписываться ) Объясняешь доходчиво и информативно. Благодарю.
Огромное Спасибо!
Не знаю как у всех асинхронность так работает, у меня получается полностью синхронный код. Делаю вызов асинхронной функции, по завершении она должна вызвать функцию что-то типа обработчика события. Вызов не происходит пока я где-то не напишу await для полученной корутины. Кроме NodeJS я так и не увидел ни где асинхронность.
Спасибо, отличное объяснение!
Кайф. пожалуйста, продолжайте)
5 объяснение, которое смотрю. Лучшее из всех, спасибо большое)
Спасибо большое, наконец-то я понял всю эту х*йню с property)
По видосу - спсибо брат! Спасибо огромное, в связке с Шумейковскими видосами просто бомба!