In-place list operation
Methods mutable collections, які лише змінюють object, повертають None; тому list.insert() і list.sort() не треба присвоювати назад змінній.
Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
Methods mutable collections, які лише змінюють object, повертають None; тому list.insert() і list.sort() не треба присвоювати назад змінній.
Comprehension може не лише фільтрувати, а й перетворювати кожен element: наприклад, витягнути emails або IDs із list of dictionaries. Вираз ліворуч описує значення результату, `for` — джерело, а optional `if` — фільтр.
`*locators` збирає довільну кількість positional arguments у tuple, який можна перетворити на list. `**headers` збирає named arguments у dictionary. Ці форми корисні, коли кількість однотипних inputs справді змінна; для стабільного контракту явні parameters читабельніші.
`not errors` є короткою перевіркою порожнього списку. `browser in supported_browsers` і `browser not in supported_browsers` прямо виражають membership та прибирають ручний цикл. Для allowlist status codes зручно використовувати set: `status_code in {200, 204}`.
Для middle і особливо senior рівня очікується розуміння типів даних, проходу collections, роботи з files та databases, object lifecycle, scope variables, initialization order і test runner lifecycle. Ці знання зазвичай закріплюються після реальної проблеми, а не після ізольованої лекції. Тому відповідь не вимірюється списком syntax topics. Junior має безпечно змінювати прості scripts; middle — діагностувати non-obvious behavior; senior — пояснювати system-level root cause й обирати правильний test seam.
Домашня частина — пройтися по list of objects, додати `enumerate`, перевірити поля всередині циклу та дослідити `break`/`continue`. Failure message має зберігати контекст проблемного елемента, інакше цикл ускладнить діагностику.
`set` зберігає унікальні значення та не обіцяє бізнес-порядок. Він корисний для roles, permissions і видалення дублікатів, а також для перевірок subset/difference. Фігурні дужки без `key: value` створюють set; словник відрізняється наявністю ключів і двокрапок.
Розширені приклади пропонують змінювати вхідні дані, нормалізувати текст, працювати з ranges та порівнювати expected/actual collections. Важливо не лише отримати правильний output, а пояснити, який тип і яка операція дали результат.
Middle має орієнтуватися у standard library та основних конструкціях мови: collections, functions, reserved words/operators, способи створення й перетворення даних. Це дає змогу використовувати вбудовані можливості замість зайвих dependencies і custom wrappers. Окремий практичний блок — діагностика flaky tests: відрізнити проблему очікування, нестабільні дані, shared state, зовнішню залежність або справжню race condition. `retry` не є виправленням першопричини. Для дизайну automation code достатньо впевнено застосовувати KISS, DRY, YAGNI та DAMP. SOLID і design patterns корисні як словник для конкретних проблем, але не як вимога створювати багатошарову архітектуру. Також потрібно вміти запускати suite у CI та читати test report.
Після першої мови наступна засвоюється швидше, бо основні задачі повторюються: прочитати або записати file, пройти collection, зберегти structured data, виконати network request, звернутися до database й запустити test runner. Змінюються syntax, libraries та окремі runtime semantics. Практичний орієнтир: добре вивчити одну мову на реальних задачах, а другу брати тоді, коли вона відкриває дешевший або надійніший спосіб вирішити поточну проблему. AI допомагає швидше знайти syntax, але не замінює перевірку architecture і behavior.