Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
⚡️ mmap.mmap() — работа с файлами как с участками памяти.

Позволяет читать и записывать большие файлы без полной загрузки в ОЗУ — быстро и эффективно.

💡 Идеально для обработки гигабайтных данных!
❤1👍1
🚀 polars.DataFrame — мощная альтернатива pandas для больших данных.

Использует многопоточность и ленивые вычисления, ускоряя аналитику в разы.
Идеален, когда pandas начинает тормозить.

📚 Документация тут
👍1
🔧 array.tobytes() — конвертирует массив чисел в байтовую строку.

Удобно для работы с бинарными файлами, сокетами и передачей данных по сети.
💡 Быстро, компактно, по-питоновски
👍1
Скриншот страницы сайта в одну строку кода

Если вам нужно быстро сделать скриншот веб-страницы и сохранить его в виде изображения, вы можете использовать Python и библиотеку selenium.

Как это работает:
1. selenium: Используется для автоматизации браузера.
2. webdriver-manager: Упрощает установку и управление драйверами для браузера.
3. .get(): Загружает указанную веб-страницу.
4. .save_screenshot(): Делает скриншот текущего окна браузера и сохраняет его в виде файла.
👁 Управление ПК с помощью морганий — без рук, только взгляд!

Как это работает:

1. OpenCV + MediaPipe — находят глаза.
2. Вычисляется EAR (Eye Aspect Ratio) — фиксируем моргание.
3. Моргание → действие (нажатие клавиши, скролл, смена трека).

Где пригодится:

* 📊 Презентации: листай слайды взглядом.
* 🎵 Музыка: переключай без касаний.
* ♿️ Поддержка людей с ограниченными возможностями.
❤1
🖐 Управляй компьютером жестами руки!

Как это работает:

1. MediaPipe Hands отслеживает руку.
2. Фиксируется позиция указательного пальца.
3. Курсор движется вместе с рукой.

Применение:

* 🎤 Бесконтактное управление презентациями.
* 🎮 Игры с виртуальной мышью.
* 🔊 Регулировка громкости жестами (сжатие — тише).

💡 Контроль без касаний — будущее уже рядом
NumPy: Математические операции

NumPy позволяет проводить математические операции, не используя циклы. Ты можешь складывать, вычитать, умножать и делить массивы. Также можешь возводить в степень. Кроме этого, NumPy предоставляет богатый набор встроенных функций. Некоторые примеры показаны на скриншоте.
👍2
⚡️ Bottle — сверхлёгкий Python-фреймворк для быстрого старта веб-приложений. Всё, что нужно — один файл bottle.py, без сторонних зависимостей.

📦 Установка: pip install bottle

🚀 Пример базового приложения:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)


Открой в браузере [http://localhost:8080/hello/world](http://localhost:8080/hello/world) — и получишь: Hello World.

📚 Документация:
EN(https://bottlepy.org/docs/dev/) | RU (Habr) (https://habr.com/ru/articles/221659/)

🧠 Факт: Bottle часто используют в проектах, где важна простота и минимализм, например, для написания REST API.
👍1
🧠 Тип ndarray в NumPy — это основной тип данных для работы с массивами.

Когда создаёшь массив через numpy.array(), получаешь объект типа ndarray. Вот полезные атрибуты (не методы!), которые стоит знать:

* ndim — число измерений (или осей) массива.
* shape — форма массива: кортеж с длинами по каждой оси. Например, (3, 4) — это 3 строки и 4 столбца.
* size — общее число элементов (произведение всех чисел из shape).
* dtype — тип элементов массива (например, int32, float64).
* itemsize — размер одного элемента в байтах.
* data — буфер с сырыми байтами массива (используется редко, удобнее работать с индексами).

👀 Пример:

import numpy as np
a = np.array([[1, 2], [3, 4]])

print(a.ndim) # 2
print(a.shape) # (2, 2)
print(a.size) # 4
print(a.dtype) # int64 (зависит от системы)
print(a.itemsize) # 8 (если int64)


✨ Факт: благодаря ndarray, NumPy работает с данными гораздо быстрее, чем обычные списки Python.
Срезы в NumPy — мощный и удобный инструмент для выборки данных из массивов, очень похожий на срезы списков в Python.

📌 Основной синтаксис:
array[a:b] — срез от a до b (не включая b).

📊 Для многомерных массивов можно выбирать строки, столбцы и блоки:

* array[:, a] — выбрать весь столбец с индексом a
* array[a, :] — вся строка a
* array[m:n, p:q] — срез блока: строки m:n, столбцы p:q

🔒 Срезы нельзя использовать для удаления, только для выборки.

✨ Лайфхак: срезы — это представление, а не копия! Изменяя данные в срезе, вы меняете оригинальный массив.
❤1
Как рассчитать дату в будущем в Python

Чтобы вычислить будущий момент времени, нам нужно только добавить диапазон, определенный объектом timedelta, к текущему времени.

Затестить код можно тут
🤨4
Что делает __name__ == "__main__"?

Этот магический блок позволяет запускать файл как скрипт, но не выполнять его при импорте:

if __name__ == "__main__":
main()


💡 Удобно для тестов, CLI, или когда твой код — и модуль, и исполняемый файл.
♾ Бесконечные списки в Python

Благодаря ленивым вычислениям можно создать "бесконечный" список, который не занимает много памяти. Например, с помощью генераторов или itertools.

import itertools
for i in itertools.count():
print(i)


⚙️ Это не настоящий список, но ведёт себя похоже — пока не остановишь, элементы будут продолжать поступать.
Декораторы в Python: элегантный способ расширить поведение функций без изменения их кода.

Они позволяют оборачивать одну функцию в другую, добавляя дополнительную логику. Например, @staticmethod делает метод частью класса, но без доступа к self или cls.

⚡️ Удобно для логирования, проверки прав, кэширования и не только.
Распаковка переменных: красиво и быстро

Python умеет распаковывать всё:

a, b, c = [1, 2, 3]
x, *rest = range(5)


Это удобно, читаемо и просто 🔥

⚙️ Подходит для функций, циклов, и работы с коллекциями.
Голос → Напоминание: автоматизация с Python

С помощью Python можно превратить голосовые команды в текстовые напоминания и отправлять их себе на email. Используем speech_recognition для распознавания речи и smtplib для отправки писем.

📌 Пример:

import speech_recognition as sr
import smtplib

recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Говорите...")
audio = recognizer.listen(source)

text = recognizer.recognize_google(audio, language="ru-RU")

server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login("your_email@example.com", "your_password")
server.sendmail("your_email@example.com", "your_email@example.com", text)
server.quit()


🎙 Отличный способ превратить идеи в напоминания — прямо с голоса
❤1
Хэшируемость объектов в Python: как и зачем

Хотите, чтобы экземпляры ваших классов работали как ключи в dict или элементы set? Реализуйте методы __eq__ и __hash__. Это позволяет Python сравнивать объекты и определять их уникальность.
👍2❤1
Трассировка кода с sys.settrace: мощный инструмент отладки

Модуль sys в Python содержит скрытую жемчужину — функцию settrace(). С её помощью можно в реальном времени отслеживать вызовы функций, выполнение строк и изменения переменных.

🛠 Идеально для глубокой отладки и кастомного профилирования.
👍2
Python позволяет в пару строк превратить любой текст или ссылку в QR-код. Для этого используем библиотеку qrcode.

Этот лайфхак делает обмен информацией быстрым и удобным, превращая любую строку текста в QR-код за считанные секунды.
PyWin32: доступ к системной информации Windows

С помощью библиотеки pywin32 можно легко взаимодействовать с API Windows. Например, чтобы узнать разрешение экрана, используем GetSystemMetrics() из модуля win32api.

📌 Пример:

import win32api
import win32con

width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)

print(f"Разрешение экрана: {width}x{height}")


🎯 Полезно при разработке desktop-приложений или системных утилит под Windows.
reversed(): простой способ развернуть последовательность

Функция reversed() возвращает итератор, который обходит элементы в обратном порядке — без изменения оригинального объекта.
👍1