← Python мануфактура

Конспект і таймкоди

0:00

Оголошення, parameters, type hints і `return`

Функція оголошується через def, приймає named parameters і може повертати значення. Type hints на кшталт email: str та -> dict[str, str] покращують navigation і IDE checks, але самі по собі не валідовують input at runtime.

1:30

Повторне використання builder-функцій

build_login_payload(email, password) централізує структуру request body й прибирає дублювання inline dictionaries. Назва має описувати одну дію, а повернений об’єкт можна використати в кількох тестах. Секрети не слід виводити в logs навіть у допоміжних функціях.

build_user(email, role="viewer") дозволяє не передавати типову роль, але явно перевизначити її через role="admin". Default має бути безпечним і передбачуваним. Mutable defaults на кшталт [] або {} небезпечні, бо один об’єкт повторно використовується між викликами.

3:30

`*args` і `**kwargs`

*locators збирає довільну кількість positional arguments у tuple, який можна перетворити на list. **headers збирає named arguments у dictionary. Ці форми корисні, коли кількість однотипних inputs справді змінна; для стабільного контракту явні parameters читабельніші.

5:02

Вкладені функції та scope

Функцію можна оголосити всередині іншої, тоді вона доступна лише в зовнішньому function body. Це інколи допомагає розкласти великий transform, але single-use nested helper не завжди покращує код. Якщо логіка потрібна в кількох місцях, її краще зробити звичайною module-level function із чітким контрактом.