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 52 470 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 2 551-o'rinni va Rossiya mintaqasida 11 902-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 52 470 obunachiga ega bo‘ldi.
09 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -775 ga, so‘nggi 24 soatda esa -66 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 9.19% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.77% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 4 826 marta ko‘riladi; birinchi sutkada odatda 3 028 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 24 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 10 Iyun, 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.
Cmd + Shift + P → Disable Auto Updating Extensions)
- Используйте статический анализатор zizmor для GitHub Actions, чтобы выявлять потенциальные проблемы безопасности
- Используйте actions-up для обновления GitHub Actions до актуальных версий с SHA-pinning
- Добавьте Socket Free Firewall или safe-chain при установке npm-пакетов, чтобы снизить риски атак через цепочку поставок (supply chain attacks)
👉 @PythonPortal"é" == "é" может возвращать False в Python
Вот один из типичных Unicode-подводных камней, который часто приводит к очень запутанным багам в Python:
Две строки могут выглядеть одинаково на экране, но при этом отличаться внутри:
import unicodedata
a = "é" # один кодпоинт: U+00E9
b = "e\u0301" # "e" + комбинирующий акцент (acute accent)
print(a)
print(b)
print(a == b)
# False
print(len(a))
# 1
print(len(b))
# 2
Внешне они одинаковые, но Python хранит их как разные последовательности Unicode-кодпоинтов.
Посмотреть, что реально внутри строки, можно через repr() и unicodedata.name():
import unicodedata
for char in "e\u0301":
print(repr(char), unicodedata.name(char))
Вывод:
'e' LATIN SMALL LETTER E '́' COMBINING ACUTE ACCENTКак правильно сравнивать такие строки? Нужно нормализовать Unicode перед сравнением:
import unicodedata
a = "é"
b = "e\u0301"
a_normalized = unicodedata.normalize("NFC", a)
b_normalized = unicodedata.normalize("NFC", b)
print(a_normalized == b_normalized)
# True
NFC приводит текст к “составной” форме, где комбинация "e" + accent превращается в один символ "é".
Такие различия часто появляются в:
- пользовательском вводе
- копипасте из разных источников
- именах файлов
- поиске и фильтрации текста
- данных из разных языков и систем
Ещё один похожий кейс — невидимые символы
Например, zero-width space может ломать сравнение вообще без визуальных признаков:
text = "hello\u200b"
print(text == "hello")
# False
print(text)
# hello
print(repr(text))
# 'hello\u200b'
print() скрывает проблему, но repr() показывает реальное содержимое строки.
Подробнее можно почитать здесь:
https://pythonkoans.substack.com/p/koan-15-the-invisible-ink
👉 @PythonPortaldef generate_transactions_inefficient(df: pd.DataFrame):
transactions = []
for _, row in df.iterrows():
transactions.append({
'user_id': row['user_id'],
'amount': row['amount'],
'transaction_date': row['transaction_date'],
'status': row['status']
})
return transactions
Проблема в том, что такой подход сохраняет ВСЕ обработанные строки в памяти перед тем, как что-либо вернуть. Это как приготовить 10 000 блюд и хранить их все на кухне — место быстро закончится.
👉Лучший подход — использовать yield:
def generate_transactions_efficient(df: pd.DataFrame):
for _, row in df.iterrows():
yield {
'user_id': row['user_id'],
'amount': row['amount'],
'transaction_date': row['transaction_date'],
'status': row['status']
}
Вместо того чтобы собирать один большой список в памяти, эта функция выдаёт по одной транзакции за раз, только когда это нужно. Это как готовить блюда только по мере поступления заказов. Проблем с памятью здесь нет.
👉 @PythonPortal
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
