Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Что делает __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
Быстрое копирование текста в буфер обмена с помощью Python

С помощью библиотеки pyperclip можно копировать и вставлять текст в буфер обмена прямо из Python — полезно для автоматизации и скриптов.

📌 Пример:

import pyperclip

pyperclip.copy("Привет из Python!")
text = pyperclip.paste()
print(text)


📋 Удобно для автозаполнения форм, быстрой вставки данных и CLI-инструментов.
Получение погоды через API и Python

Используйте Python и OpenWeatherMap API, чтобы в реальном времени получать прогноз погоды.

📌 Пример (часть):

import requests

api_key = "your_api_key"
city = "Moscow"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"

response = requests.get(url).json()
print(f"{city}: {response['main']['temp']}°C")


🌤 Удобно для ботов, приложений и умных виджетов.
❤4
Пришлось на работе разобраться с интересными GitHub-проектами на Python в сфере AI, делюсь с вами, что тестировал. AutoGPT - для автономных задач, GPT‑Neo - для локальной генерации текста, а ComfyUI - для управления визуальными AI‑проектами через графические потоки.

🤖 AutoGPT — автономный AI‑агент
Проект AutoGPT способен сам ставить задачи, разбивать их на под‑задачи и выполнять их без вашего постоянного участия.
Устанавливаете, даёте цель — например, «сгенерировать отчёт о трендах рынка» — и AutoGPT будет планировать, искать информацию и создавать результат.
💡 Идеально для автоматизации рутинных задач с минимальным вмешательством.

📚 GPT‑Neo — локальный генератор текста
Open‑source модель наподобие GPT‑3 от EleutherAI, работающая в Python. Поддерживает генерацию — например, вы можете создать выпуск новостей:

from transformers import GPTNeoForCausalLM, GPT2Tokenizer
model = GPTNeoForCausalLM.from_pretrained("EleutherAI/gpt-neo-1.3B")
tok = GPT2Tokenizer.from_pretrained("EleutherAI/gpt-neo-1.3B")
prompt = "Аналитика рынка криптовалют на сегодня:"
ids = tok(prompt, return_tensors="pt").input_ids
out = model.generate(ids, do_sample=True, max_length=200)
print(tok.decode(out[0]))


Более 4 800⭐️ на GitHub.

🎨 ComfyUI — визуальный редактор для генерации изображений
Node‑based интерфейс на Python для работы с моделями вроде Stable Diffusion. Сборка «блоков» превращает текст в картинку: ввод → стиль → фильтры — и вы получаете изображение .
Идеально для тех, кто хочет гибко экспериментировать с генеративным AI без сложных скриптов.

Как протестить?

* AutoGPT:

  git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT
pip install -r requirements.txt
export OPENAI_API_KEY=…
python -m autogpt --help

* GPT‑Neo: просто используйте код выше, установив через pip install transformers torch.
* ComfyUI:

  git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
python main.py
Чтобы избавиться от значений вроде False, None, 0 или '' — воспользуйтесь filter(None, lst). Только "истинные" элементы останутся. Кстати, bool() поможет проверить, что Python считает за True и False.

Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.
📖 Чтение файла за одну строку
Метод Path.read_text() из модуля pathlib позволяет прочитать текстовый файл целиком — без лишнего кода. Всё открытие/закрытие происходит автоматически.
👍2
🧵 Что делают потоки прямо сейчас?
s‍ys._current_frames() покажет стек вызовов всех активных потоков. Очень кстати при отладке многопоточного кода.
👍2
📊 os.getloadavg() — нагрузка под контролем
Показывает среднюю загрузку системы за 1, 5 и 15 минут. Отличный способ следить за состоянием CPU в реальном времени.
👍3
🎯 any() — нашёл и хватит
Функция any() возвращает True, как только встречает первый «истинный» элемент в коллекции.

values = [0, None, '', 5]
if any(values):
print("Есть хотя бы одно значение!")


Полезно, когда нужно быстро проверить, есть ли что-то «живое» в списке.
⏳ timeit — измерим время!
timeit позволяет точно замерить, сколько времени занимает выполнение куска кода. Отлично для микрооптимизаций.

import timeit
print(timeit.timeit("sum(range(1000))", number=1000))


Используйте, чтобы сравнивать подходы и ускорять код.
🧠 ИИ на Python за 10 строк
Базовая модель классификации текста с помощью scikit-learn — всё просто и понятно.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

texts = ["я люблю Python", "ненавижу баги", "Python — это круто"]
labels = [1, 0, 1] # 1 — положительно, 0 — отрицательно

vec = CountVectorizer()
X = vec.fit_transform(texts)

model = MultinomialNB()
model.fit(X, labels)

print(model.predict(vec.transform(["обожаю Python"]))) # [1]


📌 Что делает код:
Создаёт простую модель наивного байесовского классификатора, обученную на коротких фразах. Вы можете расширить датасет и сделать свой мини‑анализатор настроения.
🔥1
[rich.print()] — быстрый способ добавить цвета, стиль и структуру в консоль. Текст, таблицы, логи — всё выглядит на уровне. Отличный инструмент, чтобы терминал не был скучным.


Документация