и посмотреть медиа
Код на салфетке - Python кодинг
и посмотреть медиа
Канал о программировании на Python и других языках. Простые объяснения и коды.
Канал о программировании на Python и других языках. Простые объяснения и коды.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.
Всем доброго вечера пятницы! «Нефть» (2007) «Нефть» — тяжёлая, почти монументальная драма о жадности, вере и одиночестве на фоне нефтяной лихорадки в начале XX века. Золотоискатель Дэниел Плэйнвью находит нефть, превращается из старателя в магната и начинает строить империю, сметая всё на своём пути: конкурентов, землю, людей и даже собственную совесть. Рядом с ним — его приёмный сын, которого он использует как «инструмент» для создания образа честного семейного человека, и харизматичный молодой проповедник, чья религия становится ещё одним бизнесом в этом мире. Чем больше у Плэйнвью власти и денег, тем больше он погружается в подозрительность, паранойю и ненависть ко всем вокруг. Это фильм не про «успешный успех», а про то, как амбиции и капитал превращают человека в монстра, который не может уже ни любить, ни доверять. Подойдёт, если вам нравятся медленные, но очень плотные драмы с сильной актёрской игрой и ощущением, что за каждым словом здесь — ещё слой смысла. Приятного просмотра!
Открыть канал и посмотреть медиаЗнаете ли вы, что один True может скрыть исключение внутри with? При выходе из with Python вызывает __exit__ и передает туда сведения об исключении, если оно возникло. Если исключение было, то ложное значение, включая None, пропускает исключение дальше; истинное сообщает Python, что оно обработано. При обычном выходе все три аргумента __exit__ равны None, а возвращаемое значение ни на что не влияет: class Ignore: def __enter__(self): return self def __exit__(self, exc_type, exc, tb): return True with Ignore(): 1 / 0 print("эта строка не выполнится") print("а эта выполнится") # а эта выполнится ZeroDivisionError возникает и прерывает выполнение тела блока – print внутри with не выполняется. Но __exit__ вернул True, поэтому исключение не выходит за пределы блока, а traceback необработанного исключения не выводится. Еще __exit__ может случайно вернуть истинное значение, пробросив результат другого метода: class Connection: def __enter__(self): return self def close(self): print("соединение закрыто") return True def __exit__(self, exc_type, exc, tb): return self.close() with Connection(): raise RuntimeError("запрос не прошел") print("выполнение продолжилось") # соединение закрыто # выполнение продолжилось Допустим, метод close() в этом API возвращает True как признак успешного закрытия. Но __exit__ передает этот результат дальше, и Python считает его обработанным исключением. Достаточно написать self.close() без return, и RuntimeError дойдет до вызывающего кода. Осознанное подавление выглядит так же, только с явной проверкой типа исключения: class SuppressZero: def __enter__(self): return self def __exit__(self, exc_type, exc, tb): return isinstance(exc, ZeroDivisionError) with SuppressZero(): 1 / 0 print("выполнение продолжилось") with SuppressZero(): int("текст") # ValueError: invalid literal for int() with base 10: 'текст' Деление на ноль гасится, а ValueError распространяется дальше, потому что для него __exit__ вернул False. По тому же протоколу работает contextlib.suppress из стандартной библиотеки: он подавляет указанные классы исключений и их подклассы. Возвращаемое значение __exit__ решает, выйдет ли возникшее исключение за пределы блока with: любое истинное значение останавливает его распространение. Если __exit__ не должен подавлять ошибки, заканчивайте метод без return или явно возвращайте False. Для намеренного локального подавления используйте contextlib.suppress(...), перечисляя только ожидаемые типы исключений. Код на салфетке × Кусочки кода
Открыть канал и посмотреть медиаПривет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 27.07.2026 — Дайджест ⚙ Вторник, 28.07.2026 — Знаете ли вы, почему обрезка строки может удалить больше, чем ожидается? 📓 Пятница, 31.07.2026 — #Почему_IT | Выпуск №6 🎬 Пятница, 31.07.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаПриветствую! «Полный облом» (2006) «Полный облом» — чёрная комедия о трёх неудачниках, которые решают немного подзаработать на шантаже… и моментально всё ломают. Бывший учитель Чарли не может продать свой роман и найти нормальную работу, пока случайное знакомство с болтливым мошенником Гасом не приводит его к идее заработать на грязном секретике священника. К ним присоединяется строгая домохозяйка Джози, и вместо аккуратной аферы начинается цепочка абсурдных смертей, недоразумений и всё более идиотских попыток замести следы. Каждый новый шаг по «плану» только сильнее загоняет троицу в угол, а их моральные принципы рушатся вместе с контролем над ситуацией. Это фильм для тех, кто любит мрачный юмор: милые на вид люди творят всё хужее вещи, а судьба словно специально показывает, что с преступлениями у них явный талант к полному провалу. Хороший вариант, если хочется небанальной криминальной комедии, где смех периодически смешивается с нервным «ой». Приятного просмотра!
Открыть канал и посмотреть медиаЗнаете ли вы, почему обрезка строки может удалить больше, чем ожидается? Аргумент strip() задает набор символов для удаления с краев строки. Метод идет с начала и конца и удаляет каждый символ, который входит в этот набор, пока не встретит другой. Поэтому при .strip(".com") по краям будут удаляться любые последовательности из ., c, o и m – в любом порядке и количестве. def domain_name(host): return host.strip(".com") print(domain_name("example.com")) # example print(domain_name("moscow.com")) # scow На первом хосте решение выглядит рабочим: справа отрезаются m, o, c и .. А слева стоит e, и так как ее в наборе нет – обрезка не начинается. На втором – слева стоят m и o, оба из набора, и оба отпадают, так что от moscow остается scow. def basename(filename): return filename.rstrip(".txt") print(basename("notes.txt")) # notes print(basename("report.txt")) # repor Односторонний rstrip от этого не спасает: он доходит справа до t, x, t, ., а следующая буква – t из слова report, тоже входит в набор. Так что имя файла укорачивается на букву, и дальше в код уходит repor. def domain_name(host): return host.strip(".com") def domain_name_fixed(host): return host.removesuffix(".com") print(domain_name("mom.com")) # пустая строка print(domain_name_fixed("mom.com")) # mom В mom.com каждый символ входит в набор, поэтому strip() удаляет строку целиком. А removesuffix и removeprefix, доступные с Python 3.9, работают с целой подстрокой: при совпадении удаляют ее целиком, при отсутствии совпадения возвращают исходную строку. strip() создан для обрезки пробелов и мусора по краям, так что на длинных аргументах он ведет себя как фильтр символов. Чтобы отрезать известный префикс или суффикс лучше импользовать removeprefix и removesuffix. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаПривет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 20.07.2026 — Дайджест ⚙️ Среда, 22.07.2026 — Знаете ли вы, что return внутри finally подавляет исключение из try?, Работа над проектом "сметана" 📓 Четверг, 23.07.2026 — #Почему_IT | Выпуск №5 🎬 Пятница, 24.07.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаВсем привет! «Кролик Джоджо» (2019) «Кролик Джоджо» — трагикомедия Тайки Вайтити про мальчика в нацистской Германии, который видит Гитлера своим воображаемым другом. 10‑летний Джоджо живёт с мамой, гордо состоит в Гитлерюгенде и искренне верит в пропаганду, пока не узнаёт, что мама прячет у них дома еврейскую девочку. Его мир рушится: идеология сталкивается с реальным, живым человеком, который не похож ни на одно страшное описание из агиток. Воображаемый «друг‑фюрер» начинает вести себя всё более агрессивно, а Джоджо постепенно понимает, что любить людей важнее, чем следовать лозунгам. Фильм одновременно смешной и очень болезненный: через юмор показывает, как детям промывают мозги, и как сложно вылезти из того, чем тебя кормили с детства. Отличный выбор, если хотите увидеть войну глазами ребёнка — наивно, смешно, но в итоге очень трогательно. Приятного просмотра!
Открыть канал и посмотреть медиаЗнаете ли вы, что return внутри finally подавляет исключение из try? Python всегда выполняет finally: и после успешного return, и после исключения. Но если finally сам содержит return, break или continue – управление уходит по этому пути, а исключение из try просто отбрасывается без traceback. def divide(a, b): try: return a / b finally: return -1 print(divide(10, 0)) # -1 – ZeroDivisionError просто исчез ZeroDivisionError действительно возникает внутри try. Но finally перехватывает управление своим return -1 раньше, чем исключение успевает подняться выше и функция возвращает -1, как будто ничего не случилось. def divide(a, b): try: return a / b finally: print("cleanup") divide(10, 0) # cleanup # Traceback (most recent call last): # ... # ZeroDivisionError: division by zero Без return в finally поведение обычное: cleanup отрабатывает, а исключение летит дальше – разница только в одном операторе. def process(items): for item in items: try: if item < 0: raise ValueError(item) finally: break return "done" print(process([-1, -2, -3])) # done – ValueError из первой итерации потерян break и continue в finally работают так же, как return – любой из них обрывает обработку исключения. Документация Питона прямо говорит, что если finally выполняет break, continue или return, сохраненное исключение не поднимается повторно. finally гарантированно выполнится, но не гарантирует, что исключение из try дойдет до вызывающего кода. return, break или continue внутри finally – способ молча проглотить баг, который потом еще и по логам не найдется. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаПривет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 13.07.2026 — Дайджест ⚙️ Среда, 15.07.2026 — Знаете ли вы, что __getattr__ вызывается не при каждом обращении к атрибуту?, #Почему_IT | Выпуск №4 📓 Четверг, 16.07.2026 — Канал добавлен в сообщество Проекты на салфетке 🎬 Пятница, 17.07.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!