Рассказываю, как наш AI-бот внезапно стал утечкой и зачем всё-таки стоит ставить защиту до запуска. Быстро, по делу и с примерами, как не повторить нашу 2-часа-ночи-паника-в-Telegram ситуацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
SymPy — это мощная библиотека для символьных вычислений на Python.
🟢 Упрощение алгебраических выражений и работа с формулами🟢 Дифференцирование, интегрирование и пределы🟢 Решение уравнений и систем уравнений🟢 Поддержка матриц, полиномов, рядов, уравнений с модулями и др.🟢 Преобразование выражений в LaTeX и код других языков (C, Fortran)
from sympy import symbols, simplify, diff, solve, Eq
x = symbols('x')
expr = (x**2 + 2*x + 1) / (x + 1)
# Упрощение выражения
print(simplify(expr)) # ➔ x + 1
# Дифференцирование
print(diff(expr, x)) # ➔ производная по x
# Решение уравнения
eq = Eq(x**2 - 4, 0)
print(solve(eq)) # ➔ [-2, 2]
pip install sympy
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
Python Tips — это онлайн-книга, собравшая десятки полезных приёмов и рекомендаций по Python: от простых до продвинутых. Автор делает упор на idiomatic Python — читаемый, лаконичный и эффективный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Покажу, как One Pixel атака рушит работу CV-моделей и разберу, какие архитектурные решения делают сети уязвимыми или устойчивыми к таким трюкам. Это не магия, а инженерные детали.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Counter из модуля collections — это удобный инструмент для подсчёта количества элементов в последовательностях. Работает как словарь, где ключи — элементы, а значения — их количество.from collections import Counter
# Подсчёт частоты символов
text = "abracadabra"
counter = Counter(text)
print(counter) # ➔ Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
# Наиболее частые элементы
print(counter.most_common(2)) # ➔ [('a', 5), ('b', 2)]
# Подсчёт слов в списке
words = ["python", "java", "python", "c++", "python", "java"]
word_counter = Counter(words)
print(word_counter) # ➔ Counter({'python': 3, 'java': 2, 'c++': 1})
Counter создаёт словарь с элементами и их количеством.most_common(n) возвращает n самых популярных элементов.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2
Модуль
logging — стандартный инструмент Python для записи логов. Он позволяет выводить сообщения разных уровней (debug, info, warning, error, critical) в консоль, файлы или другие хранилища.import logging
# Базовая конфигурация логирования
logging.basicConfig(
level=logging.DEBUG, # Минимальный уровень логов
format="%(asctime)s - %(levelname)s - %(message)s", # Формат сообщений
filename="app.log", # Логируем в файл
filemode="w" # Перезаписываем файл при каждом запуске
)
# Примеры логов разных уровней
logging.debug("Отладочное сообщение")
logging.info("Информационное сообщение")
logging.warning("Предупреждение")
logging.error("Ошибка")
logging.critical("Критическая ошибка")
basicConfig() задаёт уровень, формат и место сохранения логов.handlers. Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Перепилил рекомендации с PHP‑монолита на микросервисы с Python. Рассказываю, как разрулили хаос зависимостей, разделили зоны ответственности и получили масштабируемую систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Что произойдёт, если изменить mutable-объект, который используется как значение по умолчанию в аргументе функции?
Пример
def add_item(item, items=[]):
items.append(item)
return items
print(add_item(1)) # ➔ [1]
print(add_item(2)) # ➔ [1, 2]
print(add_item(3)) # ➔ [1, 2, 3]
Ответ
В Python значения по умолчанию вычисляются один раз при определении функции, а не при каждом её вызове.
Если это изменяемый объект (например, список или словарь), изменения будут сохраняться между вызовами функции.
✅ Как исправить: использовать None и инициализировать объект внутри функции.
python
Копировать
Редактировать
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item(1)) # ➔ [1]
print(add_item(2)) # ➔ [2]
🟢 Когда важно помнить:
— При использовании списков, словарей, множеств как аргументов по умолчанию.
— Чтобы избежать неожиданных накоплений данных между вызовами.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
Rich — это современная библиотека для красивого и функционального вывода в терминал на Python.
🟢 Цветной и стилизованный текст (поддержка ANSI-цветов)🟢 Таблицы, прогресс-бары, markdown, дерево файлов🟢 Подсветка синтаксиса кода прямо в терминале🟢 Логирование с цветами и форматированием🟢 Поддержка эмодзи и адаптация под размеры терминала
from rich.console import Console
from rich.table import Table
console = Console()
# Цветной текст
console.print("[bold green]Успех![/bold green] [yellow]Предупреждение[/yellow]")
# Таблица
table = Table(title="Рейтинг")
table.add_column("Имя", style="cyan")
table.add_column("Очки", style="magenta")
table.add_row("Алиса", "1500")
table.add_row("Боб", "1200")
console.print(table)
pip install rich
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
В этой статье узнаем как написать CI/CD для сборки Docker-образа и деплоя проекта, а также, как получить бесплатно Portainer BE.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Mouse Vs Python — это личный блог Майкла Драммонда, который более 10 лет публикует статьи о Python. Здесь можно найти гайды по стандартной библиотеке, обзоры полезных библиотек и советы по “питоничному” коду.
Please open Telegram to view this post
VIEW IN TELEGRAM
cycle из модуля itertools позволяет зациклить любую последовательность, повторяя её элементы бесконечно. Полезно для создания повторяющихся шаблонов, циклических счётчиков и генераторов данных.import itertools
colors = ["red", "green", "blue"]
# Бесконечно повторяем список
for i, color in zip(range(10), itertools.cycle(colors)):
print(i, color)
# ➔ 0 red
# ➔ 1 green
# ➔ 2 blue
# ➔ 3 red
# ➔ ...
itertools.cycle(iterable) создаёт итератор, который повторяет элементы без концаzip или islice, чтобы ограничить количество повторенийPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Расскажу, как растянуть трюк с XOR до миллиардов строк: собираю обратимый фильтр Блума, ищу тысячи пропавших ID, считаю память, бьюсь с коллизиями и показываю минимальный код. Без магии
Please open Telegram to view this post
VIEW IN TELEGRAM
Модуль
json из стандартной библиотеки позволяет легко работать с JSON — популярным форматом обмена данными между сервисами и приложениями.import json
# Пример данных
data = {
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL"]
}
# Запись в JSON-строку
json_str = json.dumps(data, ensure_ascii=False, indent=4)
print(json_str)
# Запись в файл
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# Чтение из файла
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data)
json.dumps() — преобразует объект Python в JSON-строку.json.dump() — записывает объект прямо в файл.json.loads() — читает JSON-строку и превращает её в объект Python.json.load() — читает JSON из файлаPlease open Telegram to view this post
VIEW IN TELEGRAM
❤6
Что произойдёт, если переопределить метод __bool__ у объекта в Python?
Пример
class Weird:
def __init__(self, value):
self.value = value
def __bool__(self):
return self.value % 2 == 0 # True, только если число чётное
obj1 = Weird(2)
obj2 = Weird(3)
print(bool(obj1)) # ➔ True
print(bool(obj2)) # ➔ False
Ответ
Метод __bool__ управляет тем, как объект ведёт себя в булевом контексте (if, while, bool()).
По умолчанию, если __bool__ не определён, Python пытается вызвать __len__: объект считается True, если его длина > 0.
Если нет ни __bool__, ни __len__, объект всегда будет True.
✅ Когда использовать:
— Для кастомных структур данных, где важно задать собственные правила "пустоты" или "валидности".
— Для удобной проверки состояния объекта (if stack: ..., if db_connection: ...).
❗️Важно: __bool__ должен возвращать именно True или False, иначе Python выбросит TypeError
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26