🫥 Главный red flag любого питониста
Тест на совместимость провален на первом свидании.
✅ Мы в Max – подписывайся
Тест на совместимость провален на первом свидании.
✅ Мы в Max – подписывайся
😁4
🧹 Забыли закрыть файл? В Python для этого есть
Контекстные менеджеры автоматически освобождают ресурсы после выполнения блока кода.
Не нужно вручную вызывать
✅ Мы в Max – подписывайся
withКонтекстные менеджеры автоматически освобождают ресурсы после выполнения блока кода.
with open("data.txt") as f:
data = f.read()
# файл уже закрытНе нужно вручную вызывать
f.close() — Python сделает это сам, даже если внутри блока возникнет ошибка.with используют не только с файлами, но и с соединениями, блокировками, транзакциями и другими ресурсами.✅ Мы в Max – подписывайся
👍2🔥1
💻 Await в асинхронном коде — это не опция
Запускаете 10 API-запросов через asyncio, а они всё равно выполняются 10 секунд? Знакомо?
Решение: используйте await для операций ввода-вывода. Замените requests на httpx — API похожий, но клиент действительно асинхронный.
❗️ Теперь 10 запросов могут выполняться примерно за 1 секунду вместо 10.
✅ Мы в Max – подписывайся
Запускаете 10 API-запросов через asyncio, а они всё равно выполняются 10 секунд? Знакомо?
async def fetch():
return requests.get(url).json()
# ← блокирует event loop
Решение: используйте await для операций ввода-вывода. Замените requests на httpx — API похожий, но клиент действительно асинхронный.
import httpx
async def fetch():
async with httpx.AsyncClient() as client:
r = await client.get(url)
return r.json()
❗️ Теперь 10 запросов могут выполняться примерно за 1 секунду вместо 10.
✅ Мы в Max – подписывайся
🔥1
🚫 Тройка в двойке не жилец
В мире Python есть две большие версии, между которыми была огромная пропасть несовместимости: старый Python 2 (уже давно мертв, но «легаси-код» на нем остался) и современный Python 3.
💡Мораль: придуманная ошибка MutexError (ошибка взаимоисключения) показывают то же самое, что и на мышке: обе версии одновременно работать не могут, они конфликтуют за «слот» в одной системе.
✅ Мы в Max – подписывайся
В мире Python есть две большие версии, между которыми была огромная пропасть несовместимости: старый Python 2 (уже давно мертв, но «легаси-код» на нем остался) и современный Python 3.
💡Мораль: придуманная ошибка MutexError (ошибка взаимоисключения) показывают то же самое, что и на мышке: обе версии одновременно работать не могут, они конфликтуют за «слот» в одной системе.
✅ Мы в Max – подписывайся
❤2
detect smile_[@PythonTechCode].py
711 B
🙂 Исходный код программы для определения улыбки на изображении
Эта программа — небольшой пример привлекательности мира компьютерного зрения.
Для её запуска нужно установить OpenCV с помощью этой команды:
✅ Мы в Max – подписывайся
Эта программа — небольшой пример привлекательности мира компьютерного зрения.
Для её запуска нужно установить OpenCV с помощью этой команды:
pip install opencv-python
✅ Мы в Max – подписывайся
😁2👀1
🔥 Как узнать значения локальных переменных в любой точке функции
Полезно при отладке: можно быстро увидеть значения всех локальных переменных в конкретной точке выполнения.
⚠️ Используйте
✅ Мы в Max – подписывайся
locals() возвращает словарь с локальными переменными текущей области видимости.def example():
x = 10
name = "Python"
print(locals())
example()
# {'x': 10, 'name': 'Python'}
Полезно при отладке: можно быстро увидеть значения всех локальных переменных в конкретной точке выполнения.
⚠️ Используйте
locals() для диагностики, а не для изменения переменных.✅ Мы в Max – подписывайся
👍1😁1
💡Запускаем Python-код… без Python!
Если на компьютере нет Python, код можно отправить на удалённый сервер:
Код выполняется на сервере, а результат возвращается в браузер.
⚠️ Не отправляйте туда пароли, токены и другие секретные данные.
✅ Мы в Max – подписывайся
Если на компьютере нет Python, код можно отправить на удалённый сервер:
fetch("https://pythonsandbox.dev/run", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({code: "print('Привет!')"})
})
.then(r => r.json())
.then(data => console.log(data.output));Код выполняется на сервере, а результат возвращается в браузер.
⚠️ Не отправляйте туда пароли, токены и другие секретные данные.
✅ Мы в Max – подписывайся
👍2
🫥 Среди разработчиков появился новый термин — «кукодинг». Так называют подход, когда ты передаёшь проект ИИ, а сам лишь наблюдаешь за тем, как он его пишет.
✅ Мы в Max – подписывайся
✅ Мы в Max – подписывайся
😁6🔥2
📣 Python 3.15 вышел в виде предварительной версии (pre-release)
По ссылке ниже вы можете почитать о том, что в него добавили, и сравнить его с версией 3.14:
https://docs.python.org/ru/3.15/whatsnew/3.15.html
✅ Мы в Max – подписывайся
По ссылке ниже вы можете почитать о том, что в него добавили, и сравнить его с версией 3.14:
https://docs.python.org/ru/3.15/whatsnew/3.15.html
✅ Мы в Max – подписывайся
👍1
automatic install_@PythonTechCode.py
493 B
☝🏼Исходный код для автоматической установки библиотек
Добавьте этот скрипт в начало вашей программы на Python, и теперь при её запуске в любой системе необходимые библиотеки установятся автоматически, если они ещё не установлены!
✅ Мы в Max – подписывайся
Добавьте этот скрипт в начало вашей программы на Python, и теперь при её запуске в любой системе необходимые библиотеки установятся автоматически, если они ещё не установлены!
✅ Мы в Max – подписывайся
❤2
🌍 Полезная Python-библиотека за 30 секунд: tzlocal
Нужно узнать часовой пояс, установленный на компьютере или сервере? Не разбирайтесь вручную с настройками ОС.
А если нужен объект
Установка библиотеки:
💻 GitHub
💡Полезно для приложений, которые работают на разных ОС и серверах с разными настройками времени.
✅ Мы в Max – подписывайся
Нужно узнать часовой пояс, установленный на компьютере или сервере? Не разбирайтесь вручную с настройками ОС.
tzlocal определяет локальную таймзону автоматически:from tzlocal import get_localzone_name
print(get_localzone_name())
# Europe/Moscow
А если нужен объект
zoneinfo:from tzlocal import get_localzone
tz = get_localzone()
print(tz)
Установка библиотеки:
pip install tzlocal
💻 GitHub
💡Полезно для приложений, которые работают на разных ОС и серверах с разными настройками времени.
✅ Мы в Max – подписывайся
👍2
☝🏼Оказывается, Python умеет не только считать и анализировать схемы, но и рисовать их
Библиотека
Вместо ручного рисования получаем аккуратную схему прямо из кода:
Резисторы, конденсаторы, источники сигнала и соединения собираются из готовых элементов.
Установка библиотеки:
✅ Мы в Max – подписывайся
Библиотека
schemdraw позволяет описывать электрическую схему обычным Python-кодом. Вместо ручного рисования получаем аккуратную схему прямо из кода:
import schemdraw
import schemdraw.elements as elm
with schemdraw.Drawing():
elm.Resistor().right().label('1Ω')
elm.Capacitor().down().label('10µF')
elm.Line().left()
elm.SourceSin().up().label('10V')
Резисторы, конденсаторы, источники сигнала и соединения собираются из готовых элементов.
Установка библиотеки:
pip install schemdraw
✅ Мы в Max – подписывайся
🔥3
🐍 Совет по Python: field(init=False)
В
Для этого используется
Теперь
💡 Такой подход удобен для вычисляемых атрибутов, значение которых зависит от других полей объекта.
✅ Мы в Max – подписывайся
В
dataclass иногда нужно поле, которое не должно передаваться в __init__, а вычисляется автоматически.Для этого используется
field(init=False):from dataclasses import dataclass, field
@dataclass
class Rectangle:
width: int
height: int
area: int = field(init=False)
def __post_init__(self):
self.area = self.width * self.height
Теперь
area не нужно указывать при создании объекта:rectangle = Rectangle(10, 5)
print(rectangle.area) # 50
area автоматически рассчитывается после создания объекта.💡 Такой подход удобен для вычисляемых атрибутов, значение которых зависит от других полей объекта.
✅ Мы в Max – подписывайся
👍5
🕓 Автоматическая метка времени при добавлении записей в БД
В каждой модели часто нужны поля created_at и updated_at. Заполнять их вручную при каждом INSERT и UPDATE — лишняя рутина.
В SQLAlchemy это можно автоматизировать:
Теперь база данных сама проставит время создания записи, а при её изменении
💡 Такой подход особенно удобен для моделей, где важно отслеживать историю изменений: пользователи, заказы, задачи, логи и т. д.
✅ Мы в Max – подписывайся
В каждой модели часто нужны поля created_at и updated_at. Заполнять их вручную при каждом INSERT и UPDATE — лишняя рутина.
В SQLAlchemy это можно автоматизировать:
from sqlalchemy import Column, DateTime, func
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column("id", primary_key=True)
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
Теперь база данных сама проставит время создания записи, а при её изменении
updated_at получит новое значение.💡 Такой подход особенно удобен для моделей, где важно отслеживать историю изменений: пользователи, заказы, задачи, логи и т. д.
✅ Мы в Max – подписывайся
❤3
☝🏼 Удобное логирование запросов в консоль
Когда приложение растет,
В Python встроен отличный модуль
Вместо стандартного вывода настроим базовую конфигурацию:
💡Заменяй
✅ Мы в Max – подписывайся
Когда приложение растет,
print() для отладки уже перестает справляться — нам нужно полноценное логирование. В Python встроен отличный модуль
logging, который позволяет сделать вывод информации красивым и гибким.Вместо стандартного вывода настроим базовую конфигурацию:
import logging
# Настройка логирования
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
logging.info("Приложение запущено ✅")
logging.warning("Предупреждение: что-то не так!")
logging.error("Ошибка: соединение потеряно 🚨")
💡Заменяй
print() на logging — так ты получишь более наглядный, управляемый и профессиональный вывод в консоли.✅ Мы в Max – подписывайся
👍1
🔥Мгновенное объединение сотен CSV-файлов
Устали вручную склеивать данные из разных CSV? Этот лаконичный скрипт сделает всю работу за вас, создавая единый DataFrame из всех файлов в папке.
Добавьте ignore_index=True чтобы переиндексировать строки и избежать дублирования индексов. Для больших файлов используйте параметр chunksize в pd.read_csv() для экономии памяти.
Идеально для подготовки данных перед анализом, обработки логов или консолидации отчетов.
✅ Мы в Max – подписывайся
Устали вручную склеивать данные из разных CSV? Этот лаконичный скрипт сделает всю работу за вас, создавая единый DataFrame из всех файлов в папке.
import pandas as pd
import glob
path = "path/to/csv/files/"
all_files = glob.glob(path + "*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
print(f"Объединено {len(all_files)} файлов")
print(f"Размер итогового DataFrame: {df.shape}")
Добавьте ignore_index=True чтобы переиндексировать строки и избежать дублирования индексов. Для больших файлов используйте параметр chunksize в pd.read_csv() для экономии памяти.
Идеально для подготовки данных перед анализом, обработки логов или консолидации отчетов.
✅ Мы в Max – подписывайся
🔥2❤1
🟨 История браузера в Python
Нужно получить историю посещённых сайтов программно? Для этого есть библиотека browser-history.
Она умеет извлекать историю посещений из популярных браузеров, а также экспериментально работать с закладками.
Установка:
Простой пример:
На выходе получаем пары дата/время + URL, которые можно дальше анализировать, фильтровать или сохранять в файл.
⚠️ Библиотека работает с локальными данными браузеров, поэтому доступ к истории зависит от ОС, браузера и его настроек.
✅ Мы в Max – подписывайся
Нужно получить историю посещённых сайтов программно? Для этого есть библиотека browser-history.
Она умеет извлекать историю посещений из популярных браузеров, а также экспериментально работать с закладками.
Установка:
pip install browser-history
Простой пример:
from browser_history import get_history
# Получаем историю
history = get_history().histories
for date, url in history:
print(date, url)
На выходе получаем пары дата/время + URL, которые можно дальше анализировать, фильтровать или сохранять в файл.
⚠️ Библиотека работает с локальными данными браузеров, поэтому доступ к истории зависит от ОС, браузера и его настроек.
✅ Мы в Max – подписывайся
❤1🔥1
⛔️ Как красиво игнорировать ошибки в Python
Иногда исключение может возникнуть, но отдельно обрабатывать его нет необходимости. Например, файл может отсутствовать, и это не должно останавливать программу.
Если файл не найден, FileNotFoundError будет проигнорирован, а программа продолжит выполнение.
❗️ Используйте suppress только для ожидаемых и безопасных исключений — иначе можно скрыть настоящую ошибку.
✅ Мы в Max – подписывайся
Иногда исключение может возникнуть, но отдельно обрабатывать его нет необходимости. Например, файл может отсутствовать, и это не должно останавливать программу.
from contextlib import suppress
with suppress(FileNotFoundError):
open("nonexistent.txt")
Если файл не найден, FileNotFoundError будет проигнорирован, а программа продолжит выполнение.
❗️ Используйте suppress только для ожидаемых и безопасных исключений — иначе можно скрыть настоящую ошибку.
✅ Мы в Max – подписывайся
👍5