Python/ django
60.9K subscribers
2.13K photos
82 videos
48 files
2.86K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит-каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
Download Telegram
🐍 20 ещё более продвинутых однострочников на Python — часть 3

Если ты уже пишешь на Python профессионально, вот ещё приёмы, которые реально экономят строки и читаются на лету:

1. 🗃️ Группировка по ключу без pandas

groups = defaultdict(list); [groups[k].append(v) for k, v in data]


2. 🪄 Быстрое глубокое копирование объекта

copy = pickle.loads(pickle.dumps(obj, -1))


3. 📤 Отправка JSON через POST

r = requests.post(url, json=payload)


4. 📌 Проверка, что файл — это символическая ссылка

is_symlink = Path(p).is_symlink()


5. 🧩 Быстрое объединение нескольких словарей

merged = {**d1, **d2, **d3}


6. 🧪 Проверить, что список отсортирован

is_sorted = all(a <= b for a, b in zip(lst, lst[1:]))


7. 🔍 Найти все подстроки по регулярке

matches = re.findall(r'\d+', text)


8. 🌐 Извлечь домен из URL

domain = urlparse(url).netloc


9. 🧬 Преобразовать список строк в int

nums = list(map(int, str_list))


10. 📚 Считать CSV в список словарей

rows = list(csv.DictReader(open('file.csv')))


11. 🔄 Превратить int в побитовую строку

bits = f'{num:08b}'


12. 📤 Сохранить объект в JSON-файл

json.dump(obj, open('data.json', 'w'), indent=2)


13. 🧮 Убрать пустые строки из списка

lines = [l for l in lines if l.strip()]


14. 🧾 Распарсить query string в словарь

params = dict(parse_qsl('a=1&b=2'))


15. 🧰 Получить уникальные строки, сохранив порядок

seen = set(); uniq = [s for s in seq if not (s in seen or seen.add(s))]


16. 📈 Получить индекс максимального значения

idx = max(range(len(lst)), key=lst.__getitem__)


17. 🪛 Проверить, что список вложенный (2D)

is_nested = all(isinstance(i, list) for i in lst)


18. 🧱 Убрать все символы кроме букв и цифр

clean = re.sub(r'\W+', '', text)


19. Ограничить время выполнения кода

signal.alarm(2); try: ... except: ...


20. 📦 Получить структуру всех полей dataclass

fields = [f.name for f in dataclasses.fields(MyClass)]

📌 Часть 1
📌 Часть 2

@pythonl
👍1310🔥6🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Продвинутый Python‑совет дня

💡 Используй слоты (`__slots__`) для оптимизации классов, когда тебе нужно много однотипных объектов.

По умолчанию Python хранит атрибуты объектов в словаре (`__dict__`), что удобно, но неэффективно по памяти. Если ты точно знаешь, какие поля будут у объекта — зафиксируй их:


class Point:
slots = ("x", "y") # только эти атрибуты допустимы

def __init__(self, x, y):
self.x = x
self.y = y```


📈 Выгода:

- Уменьшает использование памяти до 30–50% для миллионов объектов
- Ускоряет доступ к полям (нет __dict__)
- Запрещает создание произвольных новых атрибутов (меньше багов)

🧠 Подходит:

- Для численных расчётов (вместо namedtuple)
- При генерации большого количества однотипных объектов
- В data-heavy структурах (например, парсеры, AST, графы и т.п.)

Python — динамичный язык, но когда знаешь структуру данных заранее, slots дают тебе контроль и производительность.

👉 Видео
15🔥6👍4
🖥 Полезный, но редко используемый приём: динамическое управление множеством контекст-менеджеров через `contextlib.ExitStack`

Если вам нужно открыть *N* файлов, захватить *M* блокировок или временно изменить кучу настроек, а их количество известно только во время выполнения, традиционный with … as …: не подойдёт. Вместо «пирамиды» вложенных with воспользуйтесь ExitStack:


from contextlib import ExitStack

filenames = ["a.log", "b.log", "c.log"]

with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]

# теперь у вас список открытых файлов, с которыми можно работать
for f in files:
print(f.readline())
# здесь ExitStack автоматически закроет все файлы, даже если их было 1000


Почему это круто

- Управляет произвольным числом контекстов: добавляете их в цикл, условно, через функции-фабрики.
- Гарантирует корректный rollback при исключениях: всё, что добавлено в ExitStack, будет закрыто в обратном порядке.
- Упрощает сложную инициализацию: можно динамически «подключать» то, что нужно именно сейчас (файлы, блокировки, сетевые соединения).

🔧 Где пригодится

- Пакетная обработка файлов и архивов.
- Тестовые стенды с кучей временных ресурсов.
- Плагины, которые могут регистрировать собственные контекст-менеджеры.

Теперь никакого «каскада из with» — один аккуратный ExitStack.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥118
📊 Python for Nonprofits — книга и код для анализа данных в НКО

Это полноценное учебное пособие по Python, заточенное под нужды некоммерческих организаций.

Автор — Kenneth Burchfiel — собрал в одном репозитории и книгу, и рабочие блокноты для реального анализа данных.

Импорт и очистка данных (CSV, API, Google Sheets)
Описательная статистика, линейные регрессии
Визуализация: графики, интерактивные карты (Plotly, Folium)
Dash-приложения и публикация дашбордов
Всё оформлено как Jupyter-книга: можно читать, запускать, менять

Кому подойдёт:
– начинающим дата-аналитикам, которые хотят делать полезные проекты
– НКО, работающим с открытыми данными и отчётами
– преподавателям, ищущим учебный курс по Python с практикой

💡 Можно читать онлайн или скачать как книгу. Лицензия MIT — можно использовать где угодно.

📘 Подробнее и исходники: https://github.com/kburchfiel/pfn

@pythonl
14👍4🔥4😱1