Перейти до змісту

М2. Python Advanced

🚧 Контент у розробці. Наповнюється після завершення пілотної фази на М1.

Уроки модуля:

  • Урок 19. Функції як об'єкти першого класу — сервіс доставки після карантину: словник команд, key=, callback, фабрики й замикання, конвеєр з функцій.
  • Урок 20. Класи, простір імен — DeliveryService тримає стан і правила; атрибути класу й екземпляра, @classmethod; архітектура: функції, замикання чи клас. Практикум на реальних даних — «Титанік».
  • Урок 21. Наслідування, поліморфізм — таксі, кур'єр, самовивіз і нічний міксин з однаковим fare(); MRO, super(), качина типізація, LSP; архітектура: if за типом, ієрархія чи композиція. Практикум — «Титанік»: «Жінки та діти — першими».
  • Урок 22. Інкапсуляція, область видимості — інваріанти, _ і __, автомат статусів замовлення, @property лише для читання, global проти стану в об'єкті; архітектура: інтерфейс проти стану, правило в моделі чи в сервісі. Практикум — «Автомобілі як об'єкти».
  • Урок 23. Практикум П4. Рекурсія, «розділяй і володарюй», перебір з поверненням — базовий випадок і стек викликів, обхід вкладеного меню, merge_sort і подвоєння, backtracking для наборів ваучерів з відсіканням, lru_cache; архітектура: рекурсія проти явного стеку.
  • Урок 24. @property, декоратори класів, dunder — протоколи Python (len, in, +, <, hash, __call__), гроші як об'єкт-значення, обчислювані властивості, дескриптори, реєстр класів, @total_ordering, @dataclass; архітектура: значення проти сутності, вибір інструменту. Практикум — «Автомобілі: дескриптори».
  • Урок 25. Ітератори advanced — клас-ітератор і ітерабельне, стани генератора, close() і finally, .send() і сопрограми, генератор-автомат, yield from з результатом, itertools (dropwhile, takewhile, groupby, pairwise, accumulate, combinations); архітектура: ETL-конвеєр подій, pull проти push.
  • Урок 26. Тестування з pytest (+ валідація AI-коду) — AAA, читання падінь, межі, pytest.raises і approx, parametrize, fixtures і фабрики, tmp_path, unittest, Mock і «patch where used», coverage, перевірка AI-коду тестами на інваріанти; архітектура: піраміда тестів, залежності параметром. Проєкт delivery_tests/ і практикум basics/.
  • Урок 27. Практикум П5. Динамічне програмування + greedy (вступ) — розклад водія на зміну: жадібний вибір за найранішим кінцем і аргумент обміну, контрприклади іншим правилам, ДП «взяти або пропустити» (p(i), таблиця вручну, відновлення розкладу), мемоізація проти табуляції, перевірка перебором; архітектура: greedy / перебір / ДП, bisect до O(n log n). Додатково — модуль re і жадібні квантифікатори.
  • Урок 28. Потоки, multiprocessing, asyncio: вступ — задачі, що чекають, і задачі, що рахують; конкурентність і паралелізм; ThreadPoolExecutor, стан гонитви й Lock, GIL; ProcessPoolExecutor, окрема пам'ять процесів і __main__; async def / await, asyncio.gather, тайм-аут, блокуючі виклики; архітектура: вибір інструменту, функції без спільного стану.
  • Урок 29. Практикум П6. Stack, Queue, Heap, Trie + LRU Cache → ООП-пакет — стек (скасування дій), черга на deque і дослід подвоєння проти list.pop(0), купа з sift_up/sift_down проти heapq, префіксне дерево для автодоповнення адрес, LRU-кеш на OrderedDict проти functools.lru_cache; артефакт модуля — пакет dispatch (композиція структур у Dispatcher, 57 тестів pytest, python -m dispatch).