Хендлеры могут быть созданы для обработки текстовых сообщений, фотографий, аудио и других типов сообщений, которые могут быть отправлены в телеграм бота.
При создании бота в телеграме, необходимо создать соединение с API телеграма. Затем, для каждого типа сообщений, необходимо создать соответствующий хендлер, который будет обрабатывать этот тип сообщения.
Когда пользователь отправляет сообщение в бота, телеграм сервер отправляет это сообщение в вашу программу, в которой запущен ваш бот. Затем, используя созданные хендлеры, ваша программа обрабатывает это сообщение и выполняет определенные действия в ответ на это сообщение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3🤔1
Dask - это гибкая библиотека для параллельных вычислений в Python. Она позволяет обрабатывать большие объемы данных, распределяя нагрузку на несколько ядер процессора или даже на кластер компьютеров.
- Масштабируемость: от ноутбука до кластера
- Совместимость с экосистемой Python (NumPy, Pandas)
- Ленивые вычисления для оптимизации
import dask.array as da
# Создаем большой массив
x = da.random.random((10000, 10000), chunks=(1000, 1000))
# Выполняем операции
result = (x + 1).mean().compute()
print(f"Среднее значение: {result}")
import dask.dataframe as dd
# Читаем большой CSV файл
df = dd.read_csv('huge_file.csv')
# Выполняем группировку и агрегацию
result = df.groupby('category').agg({'value': 'mean'}).compute()
print(result)
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
👍6❤2🔥1
Декоратор — это функция, которая принимает другую функцию как аргумент и возвращает новую функцию.
def my_decorator(func):
def wrapper():
print("Выполнение функции:")
func()
print("Завершено.")
return wrapper
@my_decorator
def say_hello():
print("Привет, мир!")
say_hello()
Выполнение функции:
Привет, мир!
Завершено.
@my_decorator оборачивает функцию say_hello(), добавляя вывод до и после её выполнения. Это удобно для повторяющихся действий — логирование, проверка доступа и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
Питонисты, общий сбор на Selectel Python MeetUp 🐍
📍 30 октября, 18:00, Санкт-Петербург или онлайн
Встретимся с топовыми спикерами из Selectel, Яндекса и Райффайзен Банка. Протестируем экосистему mypy на разных версиях Python, обсудим хаос-тесты и cron/systemd timers. В конце вас ждет афтепати с пиццей и нетворкинг с тимлидами.
А теперь конкретнее — на митапе вы узнаете:
✔️ как использовать экосистему mypy в инфраструктуре с 400+ микросервисов,
✔️ как запускать задачи по расписанию от cron/systemd timers до чистого Python,
✔️ насколько сильно можно нагрузить систему, прежде чем она сломается.
Мероприятие абсолютно бесплатное. Приходите в офис Selectel или подключайтесь онлайн. Регистрируйтесь по ссылке.
P.S. Отправляйте коллеге-питонисту и приходите на митап вместе 😎
Реклама. АО "Селектел". erid:2W5zFFwSz9e
📍 30 октября, 18:00, Санкт-Петербург или онлайн
Встретимся с топовыми спикерами из Selectel, Яндекса и Райффайзен Банка. Протестируем экосистему mypy на разных версиях Python, обсудим хаос-тесты и cron/systemd timers. В конце вас ждет афтепати с пиццей и нетворкинг с тимлидами.
А теперь конкретнее — на митапе вы узнаете:
✔️ как использовать экосистему mypy в инфраструктуре с 400+ микросервисов,
✔️ как запускать задачи по расписанию от cron/systemd timers до чистого Python,
✔️ насколько сильно можно нагрузить систему, прежде чем она сломается.
Мероприятие абсолютно бесплатное. Приходите в офис Selectel или подключайтесь онлайн. Регистрируйтесь по ссылке.
Реклама. АО "Селектел". erid:2W5zFFwSz9e
❤4
int, float, str, tuple, bool, frozenset
a = "hi"
b = a
a = "bye"
print(b) # hi
a = "bye" создала новый объект.list, dict, set, bytearray, user-defined объекты
a = [1, 2, 3]
b = a
a.append(4)
print(b) # [1, 2, 3, 4]
b = a — это ссылка на тот же объект.- Можно "безопасно" копировать неизменяемые значения
- С изменяемыми — нужно использовать
.copy() или copy.deepcopy(), если не хочешь менять оригиналdef add_item(lst):
lst.append(99)
my_list = [1, 2]
add_item(my_list)
print(my_list) # [1, 2, 99]
Неизменяемые типы создают копии при присваивании, изменяемые — передают ссылку.Всегда думай, что именно ты копируешь: значение или объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
numbers = [0, 1, 2, 3, 4]
result = any(numbers)
print(result) # Output: True
numbers = [0, 0, 0, 0, 0]
result = any(numbers)
print(result) # Output: False
0 — False
n < 0 или n > 0 или type(n) == str — True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
values = [1, True, "hello", 5]
result = all(values)
print(result) # True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Одной из главных возможностей библиотеки PIL является возможность создания и редактирования изображений. С ее помощью можно создавать новые изображения с определенными размерами и цветовыми схемами, а также редактировать существующие изображения. Например, можно добавлять текст, рисовать графические примитивы, наносить различные эффекты и многое другое.
Библиотека PIL также предоставляет возможность обработки изображений в пакетном режиме. Это означает, что можно применять определенные операции к нескольким изображениям одновременно. Например, можно изменить размер и применить фильтр ко множеству изображений, что сэкономит время и упростит процесс обработки большого количества изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
def add_item(lst):
lst.append(100)
my_list = [1, 2, 3]
add_item(my_list)
print(my_list) # [1, 2, 3, 100]
Изменяемые типы:
list, dict, set, bytearrayНеизменяемые:
int, float, str, tuple, frozenset• работе с функциями (аргументы по ссылке),
• проектировании безопасных API,
• использовании словарей и множеств (ключи должны быть immutable).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤2
zeros((n, m)) - создает массив нулей с размером n x m.>>> np.zeros((3, 2))
array([[0., 0.],
[0., 0.],
[0., 0.]])
ones((n, m)) - создает массив единиц с размером n x m.>>> np.ones((2, 3))
array([[1., 1., 1.],
[1., 1., 1.]])
>>> np.ones((2, 2), dtype=np.int16)
array([[1, 1],
[1, 1]], dtype=int16)
empty() - создает массив без заполнения. Исходное содержимое случайно и зависит от состояния памяти на момент создания массива (мусор, что в ней хранится).>>> np.empty((2,2))
array([[5.e-324, 0.e+000],
[0.e+000, 5.e-324]])
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2❤1🤔1
.gitignore:# Кэш компиляции Python
__pycache__/
*.py[cod]
# Виртуальное окружение
venv/
env/
# Файлы зависимостей и IDE
*.log
*.sqlite3
*.env
*.DS_Store
# VS Code / PyCharm и прочее
.vscode/
.idea/
# Файлы зависимостей
pip-wheel-metadata/
*.egg-info/
dist/
build/
— Не лить в гит лишнее
— Исключить локальные настройки и окружение
— Сохранить проект чистым и переносимым
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
Что выдаст код выше❔
Anonymous Quiz
17%
True True
11%
False False
30%
True False
11%
False True
31%
Error
🤔6🤨2🔥1🤓1
В Python при приведении к bool любая непустая строка(даже если это пробелы) оценивается как True, а комплексный ноль - False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👾2
from dataclasses import dataclass, replace
@dataclass
class User:
name: str
age: int
user1 = User("Alice", 30)
user2 = replace(user1, age=35)
print(user2) # User(name='Alice', age=35)
- Можно изменять объект, не модифицируя оригинал.
- Работает быстрее, чем
deepcopy().- Удобно для
immutable объектов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤1
Для начала давайте создадим простой график. Для этого нам понадобятся данные, которые мы будем отображать на графике. В примере ниже мы создадим массив данных для точек x и y:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3
set1 = {1, 2, 3}
set2 = {4, 5, 6}
# Проверяем, не имеют ли два множества общих элементов
result = set1.isdisjoint(set2)
print(result) # Выводит True, поскольку множества не имеют общих элементовЕсли бы у нас было два множества с общими элементами, метод isdisjoint() вернул бы False:
set3 = {1, 2, 3}
set4 = {3, 4, 5}
result = set3.isdisjoint(set4)
print(result) # Выводит False, так как множества имеют общий элемент (число 3)-Простота и удобство проверки наличия общих элементов: Метод isdisjoint() предоставляет простой способ быстрой проверки наличия общих элементов между двумя множествами.
-Эффективность: Поиск общих элементов выполняется эффективно благодаря внутренней реализации Python для множеств.
Этот метод особенно полезен, если вам нужно определить, существует ли пересечение между двумя множествами перед выполнением других операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤2
Простое тестирование и сравнение классических алгоритмов (KNN, SVD, SlopeOne) на ваших данных с акцентом на точность предсказаний.
from surprise import Dataset, KNNBasic
from surprise.model_selection import cross_validate
# Загрузка встроенного датасета MovieLens
data = Dataset.load_builtin('ml-100k')
# Обучение KNN-модели
algo = KNNBasic()
cross_validate(algo, data, measures=['RMSE'], cv=5, verbose=True)
Чистый API для экспериментов с рекомендательными алгоритмами без сложной инфраструктуры — идеально для исследований и прототипирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
user_input = "42a"
try:
number = int(user_input)
print("Число:", number)
except ValueError:
print("Ошибка: это не целое число")
Ошибка: это не целое число
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👌1
# Установка библиотеки
!pip install fugue
# Импорт необходимых модулей
from fugue import FugueEngine
from fugue.spark import SparkExecutionEngine
# Пример обработки данных
def process_data(df):
return df.groupby("category").agg({"value": "sum"})
# Инициализация движка
engine = SparkExecutionEngine()
# Чтение данных
data = [
{"category": "A", "value": 10},
{"category": "B", "value": 20},
{"category": "A", "value": 30},
]
# Обработка данных
result = engine.run(data, process_data)
# Вывод результата
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1