Из этой задачи видно, что блок 𝚏𝚒𝚗𝚊𝚕𝚕𝚢 всегда выполняется при выходе из 𝚝𝚛𝚢/𝚎𝚡𝚌𝚎𝚙𝚝, даже если уже выбран результат 𝚛𝚎𝚝𝚞𝚛𝚗 или поймано исключение, и может ещё изменить состояние объектов. Мы также чётко видим, что работа с изменяемыми структурами данных внутри 𝚏𝚒𝚗𝚊𝚕𝚕𝚢 напрямую влияет на то, что попадёт в вывод или вернётся из функции, поэтому такие побочные эффекты лучше держать под контролем и не недооценивать их.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👍2
Чему нас учит эта задачка: логические операторы 𝚊𝚗𝚍 и 𝚘𝚛 в Python возвращают один из операндов, а не обязательно булево значение, и активно используют правду/ложь контейнеров (пустой список, пустая строка и т.п.), что полезно и для удобного задания дефолтных значений, и для лаконичных проверок.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👍1
Что выведет код?
Anonymous Quiz
68%
True True False
4%
True False False
3%
False False False
25%
True True True
Эта задачка важна тем, что показывает: булевы значения в Python — это не магический отдельный тип, а вполне себе подкласс целых чисел, поэтому True, 1 и 1.0 могут неожиданно сливаться в один и тот же ключ словаря или проходить проверки типов там, где ожидается int.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что выведет код?
Anonymous Quiz
5%
([1, 2],)
54%
([1, 2, 3],)
25%
Error
16%
Error, но t == ([1, 2, 3],)
Почему это важно
Задача показывает, что составные операторы вроде += — это не атомарная операция, а последовательность из нескольких шагов, и сбой на одном из них не откатывает предыдущие. Это учит быть осторожнее при работе с вложенными изменяемыми объектами внутри неизменяемых контейнеров и помнить, что «неизменяемость» кортежа распространяется только на его структуру, а не на содержимое элементов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😱1
Учитесь новому так, как удобно вам, вместе с Академией Топ
Академия Топ — это крупнейшая образовательная сеть с филиалами в 230 городах, в которой вы можете изучать множество разнообразных IT-профессий.
По итогам обучения выпускники Академии получают государственный диплом, признанный в 7 странах мира.
Выбирайте курс по душе:
• «Разработка на Python»
• «Разработчик программного обеспечения»
• «Кибербезопасность и сетевые технологии»
• и многое другое
Академия регулярно проводит бесплатные дни открытых дверей «Старт в IT» для тех, кто мечтает о карьере в IT, но не знает, с чего начать.
Вы сможете познакомиться с преподавателями, получить индивидуальную консультацию, увидеть работы студентов и посетить экскурсию по Академии.
А для тех, кто уже выбрал своим направлением Python-разработку, в Академии Топ проводят пробные занятия «Python с нуля: создаём чат-бота», где вы на практике изучите основы универсального языка программирования и создадите свой первый проект.
Выбирайте свой курс с подходящим вам форматом обучения!
Реклама. Филиал «АКАДЕМИЯ ТОП КУТУЗОВСКИЙ», ИНН 7730257499, erid: 2W5zFK5c4jS
Академия Топ — это крупнейшая образовательная сеть с филиалами в 230 городах, в которой вы можете изучать множество разнообразных IT-профессий.
По итогам обучения выпускники Академии получают государственный диплом, признанный в 7 странах мира.
Выбирайте курс по душе:
• «Разработка на Python»
• «Разработчик программного обеспечения»
• «Кибербезопасность и сетевые технологии»
• и многое другое
Академия регулярно проводит бесплатные дни открытых дверей «Старт в IT» для тех, кто мечтает о карьере в IT, но не знает, с чего начать.
Вы сможете познакомиться с преподавателями, получить индивидуальную консультацию, увидеть работы студентов и посетить экскурсию по Академии.
А для тех, кто уже выбрал своим направлением Python-разработку, в Академии Топ проводят пробные занятия «Python с нуля: создаём чат-бота», где вы на практике изучите основы универсального языка программирования и создадите свой первый проект.
Выбирайте свой курс с подходящим вам форматом обучения!
Реклама. Филиал «АКАДЕМИЯ ТОП КУТУЗОВСКИЙ», ИНН 7730257499, erid: 2W5zFK5c4jS
❤4🔥4❤🔥2👍1🤩1
Почему это важно
Задача учит не полагаться на интуицию при чтении сложных выражений со сравнениями: оператор in тоже участвует в цепочке, и без понимания этого правила легко неправильно предсказать результат.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
👍1
Почему это важно
Проверка 𝚡 == 𝚏𝚕𝚘𝚊𝚝('𝚗𝚊𝚗') никогда не сработает; для обнаружения NaN нужно использовать 𝚖𝚊𝚝𝚑.𝚒𝚜𝚗𝚊𝚗(𝚡) — это частый источник багов при обработке данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🙏2
👍1
Развёрнутое пояснение
Почему это важно
Многие ожидают «школьного» округления (0.5 → 1), но Python 3 намеренно использует банковское, чтобы минимизировать накопление ошибки при суммировании большого количества округлённых значений. Если нужно классическое округление, придётся писать свою функцию или использовать модуль 𝚍𝚎𝚌𝚒𝚖𝚊𝚕.
А почему ошибка меньше накапливается то?
Я тоже не сразу понял, вот объяснение.
При обычном округлении цифра 5 всегда округляется вверх, и из-за этого возникает перекос — из 10 возможных дробных частей (0,0–0,9) пять округляются вверх (5, 6, 7, 8, 9) и только четыре вниз (1, 2, 3, 4), а ноль не меняется. Когда суммируются тысячи таких округлённых значений, этот небольшой сдвиг накапливается.
Банковское округление решает проблему тем, что числа с дробной частью ровно 0,5 округляются то вверх, то вниз — в зависимости от чётности целой части. Поскольку чётные и нечётные числа встречаются примерно одинаково часто, округления вверх и вниз статистически компенсируют друг друга.
На практике разница существенная: в примере с 1000 числами обычное округление даёт погрешность ~0,1%, а банковское ~0,01% для равномерного набора данных. Подробнее можно почитать
Please open Telegram to view this post
VIEW IN TELEGRAM
✍3👍1