import sqlite3
# Создание соединения с базой данных
conn = sqlite3.connect('mydatabase.db')
# Создание таблицы "users"
conn.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL);''')
После создания таблицы мы можем добавить данные в базу данных. Для этого мы можем использовать метод
execute() и executemany() для вставки одной или нескольких строк данных соответственно. Вот пример вставки данных в таблицу "users":# Вставка данных в таблицу "users"
conn.execute("INSERT INTO users (name, age) VALUES ('John Doe', 25)")
conn.execute("INSERT INTO users (name, age) VALUES ('Jane Smith', 30)")
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", [('Alice Johnson', 35), ('Bob Brown', 40)])
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥4
Функция type() в Python - это не просто инструмент для определения типа объекта. Она также может быть использована для создания новых классов динамически. Вот простой пример:
MyClass = type('MyClass', (), {'x': 42, 'my_method': lambda self: print("Hello!")})
obj = MyClass()
print(obj.x) # Выведет: 42
obj.my_method() # Выведет: Hello!Метаклассы - это классы классов. Они позволяют нам контролировать процесс создания классов. Рассмотрим пример:
class MyMetaclass(type):
def __new__(cls, name, bases, attrs):
attrs['additional_method'] = lambda self: print("I'm additional!")
return super().__new__(cls, name, bases, attrs)
class MyClass(metaclass=MyMetaclass):
pass
obj = MyClass()
obj.additional_method() # Выведет: I'm additional!
Динамическое создание классов и функций может быть полезно в различных сценариях:
- Фабрики классов: создание классов на основе внешних данных или конфигурации.
- Декораторы классов: модификация классов без изменения их исходного кода.
- ORM (Object-Relational Mapping): динамическое создание классов на основе структуры базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1😁1🤯1👀1
Функция .upper() в Python используется для преобразования всех символов в строке в верхний регистр. Это очень полезно, когда вы хотите сравнить строки без учета регистра или обеспечить единообразие ввода данных.
Пример использования:
text = 'Hello, World!'
print(text.upper()) # Вывод: 'HELLO, WORLD!'
С другой стороны, функция .lower() преобразует все символы строки в нижний регистр. Это также может быть полезно при сравнении строк или обеспечении единообразия ввода.
Пример использования:
text = 'Hello, World!'
print(text.lower()) # Вывод: 'hello, world!'
Функции .upper() и .lower() часто используются вместе для обеспечения единообразия ввода и процесса обработки данных. Например, вы можете преобразовать ввод пользователя в нижний регистр перед проверкой его в словаре, где все ключи хранятся в нижнем регистре. Таким образом, вы можете быть уверены, что ваш код будет работать независимо от того, как пользователь ввел данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
import requests
response = requests.post(
'http://localhost:8000/extract',
files={'file': open('ваш_документ.pdf', 'rb')}
)
print(response.json()) # Ваши данные в структурированном виде!
Sparrow извлекает текст, таблицы и рукописные данные из документов, преобразуя их в структурированный формат с полной локальной обработкой для вашей безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤1
data = {"name": "Иван", "age": 30}
name = data.get("name") — «Иван»
age = data.get("age", 25) — 30 (ключ есть, берём его значение)
print(name, age) — вывод: «Иван» 30.data = {"name": "Анна"}
Ключа "city" нет, поэтому вернётся значение по умолчанию
city = data.get("city", "Не указан") — «Не указан»
print(city) — вывод: «Не указан».data = { "user": { "name": "Павел", "email": "example.com" } }
email = data.get("user", {}).get("email", "Email отсутствует") — «example.com»
phone = data.get("user", {}).get("phone", "Телефон не указан") — «Телефон не указан».Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
автоматически генерирует стандартные методы Python-классов через декларативный синтаксис, сохраняя контроль над типами и валидацией.
import attr
@attr.s
class Cat:
name: str = attr.ib() # обязательное поле
age: int = attr.ib(default=1) # с значением по умолчанию
is_fluffy: bool = attr.ib(default=True) # и ещё одно
murzik = Cat(name="Мурзик", age=3)
print(murzik) # Выведет: Cat(name='Мурзик', age=3, is_fluffy=True)
attrs — даёт скорость разработки + безопасность типов. Совместимость с mypy и IDE (подсказки типов работают из коробки).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
❤7👍2🔥1
Эквивалентно a is b and b is c. None - единственный объект, а, b, с на него ссылаются
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥2
Ограничивает RPS (запросов в секунду) и количество одновременных соединений — защищает сервисы от перегрузки при парсинге или работе с API.
import aiometer
import httpx
async def fetch(url):
async with httpx.AsyncClient() as client:
return await client.get(url)
urls = [...] # Список URL
results = await aiometer.run_on_each(fetch, urls, max_per_second=5)
Интеграция с asyncio и anyio + поддержка кастомных лимитеров. Замена самописным «костылям» с семафорами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥3
Чтобы автоматизировать работу с Docker через простые Python-скрипты вместо ручных команд в терминале.
from dockerpyze import DockerClient
# Подключаемся к Docker
docker = DockerClient()
# Получаем список всех контейнеров
containers = docker.list_containers()
print(f"Запущено контейнеров: {len(containers)}")
- Работает со всем, что умеет Docker.
- Команды как в Python — понятные и читаемые.
- Не нужно самому разбирать ошибки — библиотека сделает это за вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# Пример использования
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
if result != -1:
print("Элемент найден в позиции", result)
else:
print("Элемент не найден")
Бинарный поиск обладает несколькими преимуществами по сравнению с другими алгоритмами поиска. Во-первых, он имеет временную сложность O(log n), что делает его очень эффективным даже для больших списков данных. Во-вторых, он работает только с упорядоченными списками, что позволяет сократить количество операций поиска. И, наконец, бинарный поиск является универсальным и может быть применен для поиска элементов в любом упорядоченном списке данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4⚡1🔥1🤔1
Позволяет работать с глубоко вложенными структурами данных через простой и читаемый синтаксис, заменяя многострочные операции цепочками
.get() или вложенными циклами.from glom import glom
data = {'a': {'b': {'c': 'Hello, glom!'}}}
result = glom(data, 'a.b.c') # Достаём значение по цепочке ключей
print(result) # Вывод: 'Hello, glom!'
Уменьшает сложность кода при работе с глубоко вложенными структурами, делая его чище и удобнее для поддержки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
class MyClass:
def __init__(self, name):
self.name = name
print(f"Объект {self.name} создан.")
def __del__(self):
print(f"Объект {self.name} уничтожен.")
# Создаем объект класса
obj = MyClass("TestObject")
# Удаляем объект
del obj
# Если вы хотите избежать автоматического освобождения памяти,
# можете использовать осмысленное завершение программы, например:
import time
time.sleep(1) # daем немного времени, чтобы увидеть сообщение деструктора
MyClass, после чего его деструктор будет вызван при удалении объекта с помощью команды del obj. Таким образом, в консоль будет выведено сообщение о создании объекта, а затем сообщение о его уничтожении. Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3👍2
Распознавание текста на изображениях с высокой точностью, даже в сложных условиях (разные шрифты, низкое качество).
import easyocr
reader = easyocr.Reader(['ru', 'en']) # Выбираем языки (русский и английский)
result = reader.readtext('image.jpg') # Распознаём текст
print(result) # Выводим результат
Поддержка множества языков из коробки и простота интеграции в Python-проекты. Отлично подходит для задач автоматизации, анализа документов и обработки изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍4
—Декораторный подход, который выглядит элегантно и интуитивно понятен
—Автоматическая генерация справки и сообщений об ошибках
—Вложенные команды из коробки
—Поддержка автодополнения в shell
import click
@click.group()
def cli():
"""Утилита для работы с файлами"""
pass
@cli.command()
@click.argument('path')
@click.option('--lines', '-l', is_flag=True, help='Показать количество строк')
def analyze(path, lines):
"""Анализирует файл и выводит статистику"""
try:
with open(path) as f:
content = f.readlines()
if lines:
click.echo(f'Количество строк: {len(content)}')
except FileNotFoundError:
click.secho('Файл не найден! 😱', fg='red')
if __name__ == '__main__':
cli()
Крутая штука в Click – это то, как легко добавлять новые команды. Хотите добавить подкоманду? Просто навешиваете еще один декоратор!
@cli.command()
@click.argument('path')
def process(path):
"""Обрабатывает файлы с прогресс-баром"""
files = os.listdir(path)
with click.progressbar(files, label='Обработка файлов') as bar:
for f in bar:
# что-то делаем с файлом
time.sleep(0.1)
Click отлично работает с цветным выводом. Хотите привлечь внимание пользователя? Используйте click.secho():
click.secho('Внимание! 🚨', fg='yellow', bold=True)
click.secho('Ошибка! ❌', fg='red')
click.secho('Успех! ✅', fg='green')if click.confirm('Уверены, что хотите удалить все файлы? 🤔'):
click.echo('Поехали! 🚀')Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3
Понять внутреннее устройство трансформеров и механизмов self-attention через построение моделей поэтапно — от токенизации до генерации текста.
git clone https://github.com/rasbt/LLMs-from-scratch.git
cd LLMs-from-scratch
pip install -r requirements.txt
from src.model import GPT
# Создание экземпляра модели
model = GPT(vocab_size=10000, n_heads=8, n_layers=6)
# Обучение модели
model.train(text_data, epochs=10)
Полная прозрачность реализации — каждый компонент (positional encoding, multi-head attention) написан вручную с пояснениями в Jupyter-ноутбуках.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
Устраняет необходимость хранения паролей в конфигах или коде, используя защищенные системные хранилища.
import keyring
# Сохранение
keyring.set_password("my_app", "username", "secret123")
# Получение
password = keyring.get_password("my_app", "username")
Кроссплатформенная работа с нативными хранилищами (Windows Credential Locker, macOS Keychain, Linux Secret Service) без привязки к конкретной ОС.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
# Генерация документации для модуля
pdoc ./my_module --output-dir ./docs
Поддержка type hints и математических формул в Markdown из коробки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
# Скачать видео/аудио по ссылке (автоопределение качества)
you-get https://www.youtube.com/watch?v=dQWgXcQ
# Показать доступные форматы без скачивания
you-get --info https://vimeo.com/1236789
# Скачать конкретный формат (по itag)
you-get --itag=137 https://youtu.be/VIDEO_ID # 4K
you-get --itag=140 https://youtu.be/VIDEO_ID # Аудио 128kbps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤2