Python Portal
Всё самое интересное из мира Python Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3GMMF6
Ko'proq ko'rsatish📈 Telegram kanali Python Portal analitikasi
Python Portal (@pythonportal) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 50 982 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 2 541-o'rinni va Rossiya mintaqasida 12 059-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 50 982 obunachiga ega bo‘ldi.
28 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -384 ga, so‘nggi 24 soatda esa -15 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 9.36% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.72% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 4 770 marta ko‘riladi; birinchi sutkada odatda 2 408 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 19 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent строка, none, true, модуль, peter kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Всё самое интересное из мира Python
Сотрудничество, реклама: @devmangx
Менеджер: @Spiral_Yuri
РКН: https://clck.ru/3GMMF6”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 29 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
@pydantic будет заниматься JSON-сериализацией на стороне Rust 🦀
https://fastapi.tiangolo.com/advanced/custom-response/#json-performance
👉 @PythonPortal- разработчиков - девопсов и админов - специалистов по данным и ML - специалистов поддержки и сопровождения - тестировщиков и безопасниковВнутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой) Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами После прохождения вы получите сертификат, который можно добавить в резюме. В ближайшие 48ч курс доступен со скидкой 30% по промокоду «
23LINUX30»: открыть курс на Stepik|) или оператор (**). Ниже у нас есть два словаря: first_dict и second_dict. Мы будем использовать эти два метода, чтобы объединить словари. Вот код:
1️⃣ Использование оператора merge (|)
first_dict = {"kelly": 23,
"Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}
combined_dict = first_dict | second_dict
print(combined_dict)
Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}
2️⃣Метод 2: использование оператора merge (**)
С этим оператором нужно поместить словари внутрь фигурных скобок. В коде ниже мы “подставляем” два словаря для объединения с помощью двух операторов *. Оба словаря заключены в фигурные скобки и разделены запятой.
first_dict = {"kelly": 23,
"Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}
combined_dict = {**first_dict, **second_dict}
print(combined_dict)
Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}
👉 @PythonPortalitems = [1, 2, 2, 3, 4]
for item in items:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 2, 3, 4]
Здесь мы используем remove(), чтобы удалить все двойки из списка. Но если посмотреть на вывод, одна 2 все равно осталась. Почему так происходит: когда ты удаляешь элемент из списка, все элементы справа сдвигаются влево. А цикл продолжает идти дальше. В итоге происходит вот что: находится и удаляется первая 2. Вторая 2 сдвигается на ее место. Цикл переходит к следующему индексу и пропускает эту 2.
Лучший способ сделать это: итерироваться по копии:
for item in items[:]:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 3, 4]
Когда ты проходишь по копии (поверхностной копии), индексы в исходной копии не меняются.
Еще лучше использовать list comprehension:
items = [x for x in items if x != 2]
Никогда, ни при каких условиях не модифицируй список (или любую коллекцию) прямо во время итерации по нему. Итератор плохо переносит структурные изменения: он может пропускать элементы, обрабатывать один и тот же элемент дважды или (в некоторых случаях, например со словарями) выбрасывать RuntimeError. Это плохая практика.
👉 @PythonPortalprint по горизонтали
Когда вы проходите циклом по итерируемому объекту, функция print печатает каждый элемент с новой строки. Это потому, что у print есть параметр end. По умолчанию значение этого параметра содержит символ перевода строки (end="\n"). Чтобы печатать в одну строку, нужно убрать перевод строки и заменить его на пустую строку (end="").
В примере ниже обратите внимание на пробел между кавычками (" "): он нужен, чтобы числа печатались с пробелами между ними. Если убрать пробел (""), числа выведутся слитно, вот так: 1367. Вот код, который это показывает:
In [1]: my_list = [1, 3, 6, 7]
for number in my_list:
print(number, end=" ")
// 1 3 6 7
У print есть еще один параметр: sep. Мы используем sep, чтобы задать, чем разделять выводимые значения. Ниже в качестве разделителя используется символ /:
In [2]: print('12', '12', '1990', sep='/')
// 12/12/1990
👉 @PythonPortal= NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).
2. NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.
3. LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.
4. COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.
5. NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.
👉 @PythonPortalfrozendict будет “safe by design”, потому что он предотвращает любые непреднамеренные изменения. Это полезно не только для стандартной библиотеки CPython, но и для сторонних мейнтейнеров: можно опираться на надежный неизменяемый тип словаря.
Зачем это вообще нужно:
▪️Хочешь использовать мапу как ключ в другом dict или засунуть в set? Обычный dict нельзя, а frozendict можно (если значения тоже хэшируемые).
▪️ @functools.lru_cache() и аргументы-словари: с dict будет сложно, с frozendict нормально.
▪️Дефолты в аргументах функций: вместо “мутабельного дефолта” можно давать frozendict(...) и не ловить сюрпризы.
Как выглядит по API:
▪️Конструктор “как у dict”: frozendict(), frozendict(**kwargs), frozendict(mapping) или iterable пар, плюс можно смешивать с **kwargs.
▪️Порядок вставки сохраняется (как в обычном dict).
▪️Хэш не зависит от порядка элементов (логика через frozenset(items)), и сравнение тоже по содержимому, а не по порядку.
▪️Есть объединение через | и “обновление” |= (но |= не мутирует объект, а создает новый).
▪️.copy() в CPython по сути возвращает тот же объект (shallow), а если надо глубоко, то copy.deepcopy().
Важный момент: frozendict НЕ наследуется от dict. Это специально, чтобы нельзя было обойти “неизменяемость” вызовом dict.__setitem__ и подобных трюков.
И бонус для stdlib: авторы наметили места, где можно заменить константные/публичные мапы на frozendict (в том числе там, где сейчас MappingProxyType).
👉 @PythonPortal