Python Quiz
489 subscribers
867 photos
727 links
🎓 Python-викторины для программистов.
Каждый день новая задача, разбор и неожиданные фишки языка.
Download Telegram
Python Quiz
Что выведет этот код? 💻🐍
Учится мутабельности: как умножение списков копирует ссылки, а не сами объекты.
Нужно на работе и на собеседованиях, чтобы не попасться на скрытые side‑эффекты и не подмести баги под ковер.
lst = [[0]] * 3 создаёт три ссылки на один внутренний список; .append меняет этот объект для в…
Python Quiz
Что выведет этот код? 🧠💡
Чему учит: поведение threading.local — атрибуты локальны для потока.
Зачем важно: помогает избегать скрытых багов в многопоточном многопоточном коде и часто спрашивают на собеседованиях.
Каждый поток имеет своё пространство атрибутов в local(); не полагайтесь на общие объекты.[[/SPOI…
Что выведет этот код? ⚙️💻
Anonymous Quiz
0%
Вывод: 3 3
0%
Вывод: None 3
0%
Вывод: 3 KeyError
0%
Вывод: KeyError 3
Python Quiz
Что выведет этот код? ⚙️💻
Чему учит: отличать dict.get и dict.setdefault и замечать их побочные эффекты при инициализации ключей.
Зачем важно: помогает писать предсказуемый код и не ловить сюрпризы на собеседовании.
setdefault создаёт ключ со значением по умолчанию и возвращает его; get сам по себе ключ не со…
Python Quiz
Что выведет этот код? 🧠🤔
Чему учит: разница между тождественностью объекта (is) и равенством значений (==), и что namedtuple не меняется на месте.
Зачем: пригодится на собеседованиях и чтобы не терять баги из‑за ожиданий мутабельности. 😺
_replace создаёт новый экземпляр; is проверяет, один ли это объект, == …
Что выведет этот код? ⚙️🐍
Anonymous Quiz
100%
0
0%
1
0%
2
0%
Ошибка во время выполнения
Python Quiz
Что выведет этот код? ⚙️🐍
Чему учит: поведение __eq__ и __hash__ при добавлении объектов в set.
Зачем важно: нужно для корректной дедупликации, проектирования типов и на собеседованиях про хэш‑контракт.
Подсказка: set сначала смотрит __hash__, затем вызывает __eq__ для объектов с одинаковым хэшем.
Python Quiz
Что выведет этот код? 🧠🤔
Учит: поведение генераторов, состояние итератора после next() и как zip обрабатывает один и тот же итератор.
Зачем важно: помогает не допускать едва заметных багов в проде и блеснуть на собеседовании знанием итераторов.
next(gen) сдвигает итератор на один; zip(gen, gen) берёт элемент…
Что выведет этот код? 💡🧠
Anonymous Quiz
100%
07
0%
7
0%
Будет ValueError
0%
Будет SyntaxError
Python Quiz
Что выведет этот код? 💡🧠
Чему учит: f‑строки с динамической шириной — как подставлять спецификатор формата через { } и контролировать заполнение.
Зачем важно: полезно для аккуратного вывода чисел в логах/отчётах и на собеседованиях, где проверяют синтаксис. 😺
'0' перед шириной — символ заполнителя нулями; {w…
JIT в Python могут выпилить — и не потому что он глючит

Полгода никто не чесался — JIT спокойно жил в main с 3.13, разгонял x86-64/Linux в среднем на 8-9% и должен был стать одной из витрин 3.15 (тот уже во freeze, релиз в октябре). А 5 июня Steering Council внезапно нажал стоп.

Причина не техническая. Всё это держится на PEP 744, а он informational, не standards-track — то есть юридически никого ни к чему не обязывает: ни к поддержке, ни к метрикам успеха, ни к обещаниям совместимости. Совет сам признал: "мы не были достаточно строги к процессу для изменения такого масштаба".

Дали полгода: либо нормальный normative PEP с критериями принятия, либо код едет из main. Баги и security чинят как обычно, новые фичи — заморожены. Томас Воутерс из совета: "we're not unreasonable, but we do want this to be taken seriously" — не расстрельный дедлайн, но и не формальность для галочки.

Мне это скорее нравится, хоть и с опозданием. Три релиза фича жила без единого письменного обязательства на случай, если что-то пойдёт не так. Спохватились бы раньше — меньше народу сейчас зависело бы от undocumented behavior.
👍1
В comprehension наконец завезли распаковку через *

Все путаются в [x for row in matrix for x in row] — кажется, что for идут как во вложенном цикле, а на деле наоборот, второй for относится к первому. Классический баг на собеседованиях.

PEP 798 чинит это через *: [*row for row in matrix] — то же самое, но без риска перепутать порядок. Работает и для {*row for row in matrix}, и для словарей через **.

Забавная деталь из самого PEP: авторов натолкнул письменный экзамен по Python — студенты в ответах уже писали такую звёздочку, будучи уверены, что она существует. Не существовала — до сих пор.

Фича заморожена в 3.15.0b1, релиз в октябре. Двойной for никуда не денется, но хотя бы будет чем его заменить, когда не хочешь гадать про порядок циклов.