Python: задачки и вопросы
7.49K subscribers
1.29K photos
1 video
1 file
121 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Что выведет код?
Anonymous Quiz
15%
True True
44%
False False
25%
True False
17%
False True
🔥4
Развёрнутое пояснение

🔘Функция 𝚊𝚕𝚕(𝚒𝚝𝚎𝚛𝚊𝚋𝚕𝚎) проверяет, все ли элементы истинны; внутри она перебирает элементы и возвращает False, как только встречает ложный; если цикл завершился без такого элемента — возвращает True.​

🔘Для пустого списка цикл не выполняется ни разу, поэтому сразу возвращается True — переменная 𝚊 получает значение True.

🔘Функция 𝚊𝚗𝚢(𝚒𝚝𝚎𝚛𝚊𝚋𝚕𝚎) работает наоборот: возвращает True, как только встречает истинный элемент; если таких нет — возвращает False.​

🔘Для пустого списка нет ни одного истинного элемента, поэтому 𝚋 получает False, и print(a, b) выводит True False.

Почему это важно
Это поведение часто ломает логику валидации: проверка 𝚊𝚕𝚕(𝚌𝚘𝚗𝚍𝚒𝚝𝚒𝚘𝚗𝚜) пройдёт, даже если список условий пуст, что может быть не тем, что ожидалось.
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤯4
Развёрнутое пояснение

1️⃣Вызов 𝚍𝚒𝚌𝚝.𝚏𝚛𝚘𝚖𝚔𝚎𝚢𝚜(['𝚊', '𝚋', '𝚌'], []) создаёт словарь с тремя ключами, но второй аргумент (пустой список) вычисляется один раз, и все три значения указывают на этот единственный список.​

2️⃣Когда выполняется 𝚍['𝚊'].𝚊𝚙𝚙𝚎𝚗𝚍(𝟷), элемент 𝟷 добавляется в тот самый общий список.

3️⃣Поскольку 𝚍['𝚋'] и 𝚍['𝚌'] ссылаются на тот же объект, при печати видно {'a': [1], 'b': [1], 'c': [1]}.

Почему это важно
Это классическая ловушка при инициализации словарей со значениями-списками; правильный способ — использовать dict comprehension: {𝚔: [] 𝚏𝚘𝚛 𝚔 𝚒𝚗 𝚔𝚎𝚢𝚜} или 𝚍𝚎𝚏𝚊𝚞𝚕𝚝𝚍𝚒𝚌𝚝(𝚕𝚒𝚜𝚝).
Please open Telegram to view this post
VIEW IN TELEGRAM
1