About Python [ru]
6.21K subscribers
315 photos
1.6K links
Все о Python: алгоритмы, паттерны проектирования, задачи, нейронные сети

Канал на бирже - https://telega.in/c/python_tesst

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
​​😍 asynpg-lite: Простой асинхронный менеджер для PostgreSQL на Python

В этой статье мы разберем все функции библиотеки без разбора кода самой библиотеки.

Читать...
📌 Фиксируй не только задачи, но и решения

Нашёл элегантное решение проблемы, а через полгода снова столкнулся с такой же задачей и не помнишь, как её решал?

👉 Совет: заведи личную базу знаний. Это может быть Notion, Obsidian или обычный Markdown-файл. Записывай туда сложные решения, редкие команды терминала, полезные ссылки. Со временем у тебя будет своя «документация» по работе.
Please open Telegram to view this post
VIEW IN TELEGRAM
​​😶‍🌫️SARIMAX vs Экспоненциальное сглаживание: Когда простота побеждает

В этой статье я расскажу о серии издевательств над временными рядами, SARIMAX и экспоненциальным сглаживанием.

Читать...
👩‍💻 Фильтрация списка словарей

Напишите функцию, которая принимает список словарей и фильтрует его, возвращая только те словари, в которых значение указанного ключа превышает заданное значение.

Пример:

data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]

result = filter_by_key(data, "age", 25)
print(result)
# Ожидаемый результат:
# [
# {"name": "Bob", "age": 30},
# {"name": "Diana", "age": 35}
# ]


Решение задачи🔽

def filter_by_key(data, key, threshold):
return [item for item in data if item.get(key, 0) > threshold]

# Пример использования:
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]

result = filter_by_key(data, "age", 25)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
​​🚀История оптимизации Python сервиса: Маленький шаг для человека, гигантский скачок для сервиса

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

Читать...
​​🤖Кратко: как новичку создать чат-бот с Gradio и ChatGPT?

В этой статье вы узнаете, как создать функцию predict для обрабатывания историй сообщений, и форматировать историю сообщений для передачи в GPT.

Читать...
​​👨‍💻Использование Annotated в Python

В данной статье, я расскажу о примерах использования Annotated из модуля typing.

Читать...
👩‍💻 Как работает менеджер контекста (context manager) в Python?

В Python менеджеры контекста используются для управления ресурсами, такими как файлы или сетевые соединения, автоматически освобождая их после использования. Они реализуются с помощью методов __enter__ и __exit__.

➡️ В этом примере показано, как использовать менеджер контекста для работы с файлами:
with open('file.txt', 'r') as file:
content = file.read()

Здесь файл автоматически закроется после завершения блока with, даже если внутри него возникнет ошибка.

🗣️ Менеджеры контекста полезны для автоматического управления ресурсами и обработки исключений.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Деплой без стресса: автоматизируем процесс для Telegram-ботов

В статье рассказывается, как настроить автоматический деплой Telegram-бота на сервер с использованием GitHub Actions. Это поможет ускорить обновление кода и минимизировать ошибки при ручной загрузке.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как простая задачка поставила в тупик программистов (и как они из него выбрались)

В 2010 году пользователь Stack Overflow не справился с задачей на собеседовании. Обсуждение способов решения этого задания стало одной из самых популярных тем на платформе.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Задачка по Python

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

➡️ Пример:

python app.py fetch — получает данные из кэша, а если кэш истек, то заново запрашивает данные и обновляет кэш.

Решение задачи ⬇️

import time
import json
import requests
from pathlib import Path

CACHE_FILE = Path("cache.json")
CACHE_TTL = 60 # время жизни кэша в секундах

def update_cache():
data = requests.get("
https://api.example.com/data").json()
cache_data = {"data": data, "timestamp": time.time()}
with open(CACHE_FILE, "w") as file:
json.dump(cache_data, file)
return data

def fetch_data():
if CACHE_FILE.exists():
with open(CACHE_FILE, "r") as file:
cache = json.load(file)
if time.time() - cache["timestamp"] < CACHE_TTL:
print("Данные из кэша:", cache["data"])
return cache["data"]

print("Обновление кэша...")
return update_cache()

# Запрос кэшированных данных
fetch_data()
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Дуалистичная типовая система JavaScript VS Единая объектная система Python. Краткий обзор

Сегодня поговорим о объектах, объектной архитектуре и способах взаимодействия с ними на примере языков программирования Python и JavaScript. Получилось небольшое исследование, противопоставляющее прототипирование и ООП.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀Нужны качественные ноды для работы?

📌У нас лучшие цены на рынке!
📌Безлимитные запросы!
📌Выделенные ноды от 87$
📌Shared - 50$ за 1шт
📌Работайте с комфортом!

Бот для покупки лучших нод - @Flash_Node_bot
Контакт поддежки - https://t.iss.one/Flash_Node_support

Если нужной ноды не нашлось в нашем боте - напишите в поддержку мы установим ее для вас

Напишите в поддержку что вы от "xCode" и получите 30% скидку на первый заказ!
👩‍💻 Как сделать блог разработчика на GitHub Pages с помощью Django

Расскажем, как превратить Django в генератор статических сайтов и сделать полноценный блог с пагинацией, сортировкой записей по тегам, подсветкой синтаксиса кода, контактной формой, подпиской на рассылку и поддержкой 20 различных тем оформления.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как работает декоратор @property в Python и зачем он нужен?

Декоратор @property в Python превращает метод класса в атрибут, позволяя работать с ним, как с обычным свойством. Это упрощает доступ к приватным данным и добавляет контроль за их валидацией и изменением.

С помощью @property можно создавать интерфейс для работы с данными объекта, защищая их от некорректных значений и обеспечивая читаемость кода.

➡️ В этом примере декоратор @property используется для создания свойства age, которое проверяет корректность введенного значения:

class Person:
def __init__(self, age):
self._age = age

@property
def age(self):
return self._age

@age.setter
def age(self, value):
if value < 0:
raise ValueError("Возраст не может быть отрицательным.")
self._age = value

p = Person(30)
p.age = 35 # Работает нормально
print(p.age) # 35
p.age = -5 # ValueError: Возраст не может быть отрицательным.


🗣 Использование @property полезно для создания аккуратного интерфейса доступа к данным с их защитой и валидацией, соблюдая при этом принципы инкапсуляции.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Курс Django: Сложная форма с кастомной капчей

Делаем анкету с различными виджетами, защищаем форму с помощью капчи, автоматически отправляем данные и вложенные файлы на email.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Задачка по Python

Создайте Python-скрипт, который проверяет доступность указанного веб-сервера и отправляет уведомление на почту, если сервер недоступен. Скрипт должен выполнять проверку каждые 5 минут и отправлять уведомление только один раз, если сервер падает, а затем повторно — только когда сервер снова станет доступен.

➡️ Пример:

python monitor.py https://example.com — проверяет доступность сервера по адресу https://example.com, отправляет уведомление на почту, если сервер перестаёт отвечать, и повторно уведомляет при восстановлении работы.

Решение задачи ⬇️

import requests
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sys

# Настройки для отправки уведомлений
SMTP_SERVER = '
smtp.example.com'
SMTP_PORT = 587
EMAIL = '
[email protected]'
PASSWORD = 'your-password'
TO_EMAIL = '
[email protected]'

# Функция для отправки уведомления
def send_notification(subject, message):
msg = MIMEMultipart()
msg['From'] = EMAIL
msg['To'] = TO_EMAIL
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))

with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.sendmail(EMAIL, TO_EMAIL, msg.as_string())
print(f"Уведомление отправлено: {subject}")

# Функция для проверки доступности сервера
def check_server(url):
try:
response = requests.get(url, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False

# Основная функция мониторинга
def monitor(url):
server_is_down = False

while True:
is_up = check_server(url)

if is_up and server_is_down:
send_notification("Сервер восстановлен", f"Сервер {url} снова доступен.")
server_is_down = False
elif not is_up and not server_is_down:
send_notification("Сервер недоступен", f"Сервер {url} перестал отвечать.")
server_is_down = True

time.sleep(300) # Проверка каждые 5 минут

if __name__ == "__main__":
if len(sys.argv) < 2:
print("Укажите URL сервера для мониторинга.")
sys.exit(1)

url = sys.argv[1]
monitor(url)
Please open Telegram to view this post
VIEW IN TELEGRAM