Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
Купите возможность посмотреть на черный квадрат😏 p.s. хочу посмотреть на то, как работают TG STARS
1️⃣. Привычно ли смотреть на текст НАД картинкой?🧐
2️⃣. Стоит ли применять такую логику в постах?

3️⃣. За что вы начали ставить дизлайки?🫣😔
4️⃣. Знали, что платный контент нельзя редачить? Знайте!
👍42👎1🥴1
Создание собственных декораторов с functools.wraps на Python 🐍

Что такое декораторы? 🤔

Декораторы в Python - это мощный инструмент для изменения поведения функций или классов без изменения их исходного кода. Они позволяют "обернуть" существующую функцию дополнительной функциональностью.

Зачем нужен functools.wraps? 🎁

При создании декораторов возникает проблема: метаданные декорируемой функции (такие как имя и документация) теряются. Здесь на помощь приходит functools.wraps!

Пример декоратора без functools.wraps 😕

def my_decorator(func):
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: wrapper
print(greet.__doc__) # Выводит: None


Пример с использованием functools.wraps 🌟

from functools import wraps

def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: greet
print(greet.__doc__) # Выводит: Эта функция приветствует пользователя


Преимущества использования functools.wraps 🏆

1. Сохранение метаданных функции
2. Улучшение отладки и документирования
3. Совместимость с инструментами анализа кода
👍1🤯1
🔥 Параллельная обработка данных с Dask в Python: Мощь и Простота

➡️Что такое Dask? 🤔

Dask - это гибкая библиотека для параллельных вычислений в Python. Она позволяет обрабатывать большие объемы данных, распределяя нагрузку на несколько ядер процессора или даже на кластер компьютеров. 💻➡️💻➡️💻

➡️ Почему Dask? 🌟

- Масштабируемость: от ноутбука до кластера 📈
- Совместимость с экосистемой Python (NumPy, Pandas) 🐍
- Ленивые вычисления для оптимизации 🦥

➡️ Примеры использования Dask 💡

➡️1. Параллельные вычисления с Dask Array 📊

import dask.array as da

# Создаем большой массив
x = da.random.random((10000, 10000), chunks=(1000, 1000))

# Выполняем операции
result = (x + 1).mean().compute()

print(f"Среднее значение: {result}")


➡️ 2. Обработка больших DataFrame с Dask 📈

import dask.dataframe as dd

# Читаем большой CSV файл
df = dd.read_csv('huge_file.csv')

# Выполняем группировку и агрегацию
result = df.groupby('category').agg({'value': 'mean'}).compute()

print(result)


➡️ 3. Параллельное применение функций с Dask Delayed 🔄

from dask import delayed

@delayed
def process_data(x):
# Здесь может быть сложная обработка
return x * 2

data = [1, 2, 3, 4, 5]
results = [process_data(x) for x in data]
final_result = delayed(sum)(results).compute()

print(f"Итоговый результат: {final_result}")


➡️ Заключение 🎉

Dask - это мощный инструмент для параллельной обработки данных в Python. Он позволяет легко масштабировать ваши вычисления и работать с большими объемами данных эффективно. Начните использовать Dask сегодня и ощутите разницу в скорости обработки ваших данных! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Друзья, у нас отличные новости!

Теперь вы можете писать и публиковать свои статьи на различные IT-темы на нашем сайте — devgurt.com 🖥. Лучшие работы и авторы будут отмечены и вознаграждены! 💻

Статьи будут попадать в нашу группу с указанием автора, если вы пожелаете!©️

А ещё, мы запустили второй телеграм-канал — @devgurt 🚀.

Там будут появляться статьи не только по Python, но и по программированию и технологиям в целом. Присоединяйтесь и будьте в курсе всех новинок! 🔥

Подписывайтесь и делитесь своими знаниями с сообществом! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
5
❗️Работа с памятью: weakref модуль в Python❗️


1. Модуль weakref 🔗

Модуль weakref предоставляет инструменты для создания слабых ссылок на объекты. 🛠

➡️ Что такое слабые ссылки? 🤔

Слабые ссылки позволяют ссылаться на объект без увеличения его счетчика ссылок. Это означает, что объект может быть удален сборщиком мусора, даже если на него есть слабая ссылка. 🗑

➡️ Пример использования weakref:

import weakref

class MyClass:
pass

obj = MyClass()
weak_ref = weakref.ref(obj)

print(weak_ref()) # Выводит объект MyClass
del obj
print(weak_ref()) # Выводит None


🔺 Заключение 🎓

Использование модуля weakref позволяет разработчикам Python лучше контролировать управление памятью в своих программах. Это особенно полезно при работе с большими объемами данных или в системах с ограниченными ресурсами. 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
❗️Что такое Legacy код?❗️

Legacy код, или унаследованный код, - это существующая кодовая база, которая продолжает использоваться, несмотря на то, что она может быть устаревшей, плохо структурированной или трудной для поддержки. 🏛

➡️ Характеристики Legacy кода 📊

- Устаревшие технологии или методологии 🕰
- Отсутствие или недостаточность документации 📄
- Сложность в поддержке и расширении 🔧
- Высокая связность и низкая сплоченность 🔗

➡️ Примеры Legacy кода на разных языках 💻

😅 Python

# Legacy код на Python
def calculate_total(items):
total = 0
for item in items:
total = total + item['price'] * item['quantity']
return total

# Современный эквивалент
def calculate_total(items):
return sum(item['price'] * item['quantity'] for item in items)

😄 C++ 🔨 и Java ☕️ коды доступны в нашем телеграм канале, посвященному разработке не только на Python


➡️ Проблемы, связанные с Legacy кодом 🚧

- Сложность внесения изменений и добавления новых функций 🔒
- Повышенный риск появления ошибок при модификации 🐛
- Трудности в интеграции с современными технологиями 🔌
- Зависимость от устаревших библиотек и фреймворков 📚

➡️ Стратегии работы с Legacy кодом 🛠

- Постепенный рефакторинг 🔄
- Написание тестов для существующего кода 🧪
- Документирование существующей функциональности 📝
- Модульная замена частей системы 🧩

🔺 Заключение

Работа с Legacy кодом - это неизбежная часть жизни многих разработчиков. Хотя он может представлять сложности, правильный подход к его обработке может значительно улучшить качество и поддерживаемость программного обеспечения. 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Признавайся. Твоя фича?🤨
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Большинство людей попалось на уловке с 27/3. Дело в том, что деление в Python всегда выдает дробное число. То бишь 27/3 —> 9.0. Если вы хотите получить целое, то используйте // (целочисленное деление)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🟢 Введение в FastStream (кратко) 🌊

FastStream - это мощная библиотека для Python, которая упрощает создание и управление потоковыми приложениями. Она предоставляет удобный интерфейс для работы с различными брокерами сообщений, такими как Kafka и RabbitMQ. 🐰🐘

Основные преимущества FastStream 🌟

- 🔧 Простота использования
- 🚀 Высокая производительность
- 🔄 Поддержка асинхронного программирования
- 🔌 Легкая интеграция с существующими проектами

💠 Установка FastStream 💻

Для начала работы с FastStream, установите библиотеку с помощью pip:

pip install faststream


## Пример использования FastStream с Kafka 🚀

Давайте рассмотрим простой пример использования FastStream с Kafka:

from faststream import FastStream, Logger
from faststream.kafka import KafkaBroker

# Создаем брокер Kafka
broker = KafkaBroker("localhost:9092")

# Инициализируем FastStream
app = FastStream(broker)

# Определяем обработчик сообщений
@broker.subscriber("input-topic")
async def process_message(msg: str, logger: Logger):
logger.info(f"Получено сообщение: {msg}")
# Обработка сообщения
processed_msg = msg.upper()
# Отправка обработанного сообщения
await broker.publish(processed_msg, "output-topic")

# Запускаем приложение
if __name__ == "__main__":
app.run()


➡️ Объяснение примера 🧐

В этом примере мы:

1. Импортируем необходимые модули из FastStream.
2. Создаем брокер Kafka, указывая адрес сервера.
3. Инициализируем FastStream с нашим брокером.
4. Определяем функцию-обработчик сообщений с декоратором @broker.subscriber.
5. В обработчике мы логируем полученное сообщение, преобразуем его в верхний регистр и отправляем в другую тему.
6. Запускаем приложение с помощью app.run().

смотреть больше примеров можно тут в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Python и все, что с ним связано и для него нужно держится в топ 10 всех трех списков🤘🏻

Что думаете на данный счет?🤨

Больше статистик в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Топ 3 расширения для VSCode 👩‍💻

➡️ autoDocstring
Быстро генерирует докстринги по шаблону. Удобно когда пишешь либы. Скачать можно тут

➡️ Auto-Collapse Folders
Сворачивает все лишние папки, оставляет открытой только ту, в которой ты находишься.
Скачать можно тут

➡️ Code Spell Checker
Проверяет написания всех слов, исправляет опечатки. Скачивай тут. Чтобы был русский язык качай еще это

Ставьте 👍 и заходите в наш чатик)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🚀 Создание многопоточных приложений с concurrent.futures в Python (основы)


🧠 Что такое concurrent.futures?

Представьте, что вы супергерой, способный делать несколько дел одновременно. Это и есть concurrent.futures! 🦸‍♂️ Этот мощный модуль в Python позволяет вам выполнять задачи параллельно, экономя драгоценное время и ресурсы.

🛠 Основные инструменты

В нашем арсенале два главных оружия:

- 🧵 ThreadPoolExecutor - для задач, связанных с вводом-выводом
- 🖥 ProcessPoolExecutor - для вычислительно-интенсивных задач

💻 Давайте напишем код!

Вот простой пример использования ThreadPoolExecutor:

import concurrent.futures
import time

def task(name):
print(f"Задача {name} начата")
time.sleep(2)
return f"Задача {name} завершена"

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
tasks = [executor.submit(task, f"#{i}") for i in range(5)]

for future in concurrent.futures.as_completed(tasks):
print(future.result())


🎉 Вуаля! Мы только что создали многопоточное приложение, которое выполняет 5 задач параллельно, используя пул из 3 потоков.

Преимущества использования concurrent.futures

- ⚡️ Повышение производительности
- 🧩 Простота использования
- 🔄 Автоматическое управление потоками
- 🎛 Гибкость в настройке

🔺 Заключение

Поздравляем! Теперь вы знаете, как создавать многопоточные приложения с помощью concurrent.futures. Это мощный инструмент, который поможет вам писать более эффективный и быстрый код. Не забывайте практиковаться и экспериментировать - ведь в мире многопоточности возможности безграничны! 🌈

Удачи в ваших кодерских приключениях! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Профилирование Python-кода: Ваш путь к оптимизации! 🚀

1. Зачем нужно профилирование? 🤔

Представьте, что ваш код - это спортивный автомобиль. Профилирование - это как диагностика двигателя. Оно помогает найти "узкие места" и раскрыть истинный потенциал вашего кода. Круто, правда? 😎

2. cProfile: Ваш верный помощник 🦸‍♂️

cProfile - это встроенный инструмент Python для профилирования. Он как супергерой, который анализирует каждую функцию вашего кода.

import cProfile

def my_function():
# Ваш код здесь
pass

cProfile.run('my_function()')


Вуаля! 🎩 Теперь у вас есть детальный отчет о работе вашей функции.

3. line_profiler: Микроскоп для вашего кода 🔬

Если cProfile - это общая картина, то line_profiler - это микроскоп. Он анализирует каждую строку кода. Потрясающе, не так ли?

@profile
def my_function():
# Ваш код здесь
pass

# Запустите с: kernprof -l -v your_script.py


Теперь вы видите, сколько времени занимает каждая строка. Это как рентген для вашего кода! 📊

4. Практические советы 💡

- 🟠Профилируйте регулярно: Это как чистка зубов для вашего кода!
- 🟠 Фокусируйтесь на горячих точках: 80% времени обычно тратится на 20% кода.
- 🟠 Не оптимизируйте преждевременно: Сначала убедитесь, что код работает правильно.

5. Заключение: Станьте мастером оптимизации! 🏆

Профилирование - это ваш секретный ингредиент для создания быстрого и эффективного Python-кода. С cProfile и line_profiler в вашем арсенале, вы готовы покорить любые вершины производительности! 🚀

Помните: великая сила профилирования приходит с великой ответственностью. Используйте её мудро, и ваш код будет летать! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Машинное обучение с PyTorch: создание и обучение нейронных сетей 🧠💻

В мире современных технологий машинное обучение играет ключевую роль. Одним из самых популярных инструментов для разработки и обучения нейронных сетей является PyTorch.

Что такое PyTorch? 🤔

PyTorch - это открытая библиотека машинного обучения, разработанная Facebook AI Research. Она предоставляет гибкий и интуитивно понятный интерфейс для создания сложных нейронных сетей.

Основы создания нейронной сети в PyTorch 🛠

Создание нейронной сети в PyTorch начинается с определения архитектуры. Вот простой пример:

import torch.nn as nn

class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)

def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x


Этот код определяет простую нейронную сеть с двумя полносвязными слоями.

Обучение нейронной сети 📚

Обучение - это процесс, в котором сеть корректирует свои веса для минимизации ошибки предсказания. Вот базовый цикл обучения:

optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

for epoch in range(num_epochs):
for batch in data_loader:
optimizer.zero_grad()
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()


Преимущества PyTorch 🌟

- Динамические вычислительные графы
- Простота отладки
- Богатая экосистема и сообщество
- Интеграция с Python

🔺 Заключение

PyTorch предоставляет мощный и гибкий инструментарий для создания и обучения нейронных сетей. С его помощью вы можете реализовать самые современные алгоритмы машинного обучения и решать сложные задачи в области искусственного интеллекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2