Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Возврат нескольких значений

Функции в Python могут возвращать более одной переменной без применения словаря, списка или класса.
Библиотека rich: красивый вывод в консоль

Если вы хотите вывести информацию в консоль с красивым форматированием, цветами и даже анимацией, обратите внимание на `rich`. Эта библиотека позволяет добавлять стильный текст, таблицы, прогресс-бары и другие элементы в консоль, не прибегая к сложным настройкам.

Пример использования:
from rich.console import Console
from rich.table import Table

console = Console()

# Простой вывод текста
console.print("Hello, World!", style="bold green")

# Таблица
table = Table(title="Users")
table.add_column("Name", style="cyan", no_wrap=True)
table.add_column("Age", style="magenta")
table.add_row("Alice", "24")
table.add_row("Bob", "30")

console.print(table)


Преимущества:
- Легко создавать стильный вывод.
- Поддержка таблиц, прогресс-баров, панелей и других элементов.
- Улучшает взаимодействие с пользователем в консольных приложениях.

Потрясающий инструмент для всех, кто работает с консольными приложениями.
❤2👍1
Проект с GitHub: python-fire — автоматическая генерация CLI интерфейсов

Если вы хотите быстро создать интерфейс командной строки для вашего Python-программы, попробуйте `python-fire`. Это библиотека, которая позволяет автоматически генерировать CLI интерфейс для вашего кода, что делает разработку инструментов и утилит значительно проще.

Пример использования:
import fire

class HelloWorld(object):
def hello(self, name="World"):
return f"Hello, {name}!"

if __name__ == '__main__':
fire.Fire(HelloWorld)


Теперь, с помощью команды в терминале:
python script.py hello --name Alice

Программа выведет:
Hello, Alice!


Преимущества:
- Легко создавать и запускать CLI-интерфейсы.
- Меньше кода для реализации команд.
- Позволяет гибко настраивать параметры командной строки.

Этот проект поможет вам быстро разрабатывать удобные и мощные утилиты с минимальными усилиями.
🤨2❤1👍1
Преобразование Word Doc или Docx в PDF в Python

Spire.Doc for Python предоставляет метод Document.LoadFromFile(), который позволяет пользователям загрузить файл Doc или Docx.

После этого можно выполнить преобразование в PDF с помощью метода Document.SaveToFile(string filename, ToPdfParameterList parameter).
Вывод строки или списка несколько раз

Для этого отлично подходит оператор умножения (*) — можно умножить строки или списки на любое количество. Простой и эффективный способ повторить элементы.

Вот интересный момент: можно создать список, например, с нулями, и умножить его, чтобы получить нужное количество одинаковых значений. Такой подход часто бывает полезен, когда нужно быстро создать пустые или одинаковые элементы.

Вот пример:

zeros = [0] * 5  # создадим список из 5 нулей
print(zeros)
👍3
Библиотека `Pydantic`: валидация данных и аннотации типов

Если вам нужно валидировать данные или работать с аннотациями типов в Python, обратите внимание на `Pydantic`. Эта библиотека упрощает работу с валидацией данных, предоставляя простые и мощные модели на основе аннотаций типов. Особенно полезна при разработке API или работе с формами.

Пример использования:
from pydantic import BaseModel, ValidationError

class User(BaseModel):
name: str
age: int

try:
user = User(name="Alice", age=30)
print(user)
except ValidationError as e:
print(e)


Преимущества:
- Простой способ создания моделей с валидацией данных.
- Автоматическая проверка типов.
- Генерация документации и работа с JSON.

Идеален для быстрого создания безопасных и валидируемых данных в вашем проекте.
👍6
Использование метода setdefault()

Метод setdefault() помогает не только получить значение по ключу в словаре, но и автоматически добавляет ключ с заданным значением по умолчанию, если его нет. Это полезно, чтобы избежать ошибок при попытке доступа к несуществующему ключу.
👍7
Проект с GitHub: `httpx` — асинхронные HTTP-запросы

Для тех, кто работает с асинхронными запросами, `httpx` — это отличный выбор. Эта библиотека позволяет делать асинхронные HTTP-запросы с использованием asyncio, а также поддерживает синхронные запросы и множество дополнительных возможностей.

Пример использования:
import httpx
import asyncio

async def fetch_data():
async with httpx.AsyncClient() as client:
response = await client.get('https://httpbin.org/get')
print(response.json())

asyncio.run(fetch_data())


Преимущества:
- Поддержка асинхронных запросов.
- Простота в использовании и интеграции с asyncio.
- Поддержка HTTP/2, прокси, аутентификации и других особенностей.

Если нужно работать с асинхронными HTTP-запросами — это ваш выбор.
🔥1
Loguru — мощный инструмент для простого и удобного логирования в Python. Хотя стандартная библиотека logging присутствует в Python, многие разработчики считают её сложной для настройки: слишком много параметров для конфигурации логов, уровней и ротации файлов.

Поэтому многие предпочитают использовать Loguru, который предлагает удобный и гибкий подход. Библиотека поддерживает расширенные возможности форматирования логов, архивирование файлов и множество других полезных функций.
👍5
Библиотека Plotly: интерактивные графики для анализа данных

Для визуализации данных и создания интерактивных графиков попробуйте `Plotly`. Это мощная библиотека для создания графиков, диаграмм и интерактивных визуализаций, которая идеально подходит для аналитики и представления данных.

Пример использования:
import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()


Преимущества:
- Интерактивные графики для веб и Jupyter.
- Легкость интеграции с различными данными и форматами.
- Простота использования для аналитиков и исследователей.

Если вам нужно добавить интерактивность в визуализацию данных, `Plotly` — это то, что нужно
Проект с GitHub: `typer` — простой интерфейс командной строки с Python

`Typer` — это библиотека для создания интерфейсов командной строки, основанная на аннотациях типов. Она автоматически генерирует справку по командам и проверяет параметры, делая создание CLI интерфейсов в Python простым и удобным.

Пример использования:
import typer

def main(name: str, age: int = 30):
print(f"Hello {name}, you are {age} years old.")

if __name__ == "__main__":
typer.run(main)


Запуск:
python script.py Alice --age 25


Преимущества:
- Генерация командной строки из аннотаций типов.
- Простота в использовании и автоматическая проверка типов.
- Автоматически сгенерированная справка и подсказки.

`Typer` — отличный инструмент для быстрого создания мощных и удобных CLI-приложений
Enum в Python — это удобный способ группировать связанные константы в одном месте, чтобы они не "разбегались" по коду и не теряли свою структуру.

Вместо того, чтобы использовать обычные переменные с магическими значениями, Enum позволяет создавать читабельные и организованные перечни, которые облегчают поддержку и улучшат понимание кода. Это отличный инструмент для работы с фиксированными наборами значений, такими как дни недели, статусы или категории.
👍2
Изменение типа данных элементов в множестве

С помощью set comprehension можно не только создавать множества, но и изменять типы данных его элементов. Это отличный способ, если нужно преобразовать данные внутри множества, не прибегая к циклам.

Добавлю, что set comprehension в Python — это мощный инструмент для работы с данными, позволяющий писать чистый и понятный код.
👍5
Перегрузка операторов в Python

Перегрузка операторов — это то, что делает Python ещё более гибким и удобным. Звучит как нечто сложное, но на самом деле, всё просто. Вы когда-нибудь задумывались, почему оператор + в Python работает и для чисел, и для строк? Это и есть пример перегрузки операторов.

В Python вы можете настроить поведение операторов для своих собственных объектов. Таким образом, вы получаете возможность использовать стандартные операторы по своему усмотрению, в зависимости от того, с чем работаете.
Методы модуля random

random.random - генерируем число с плавающей точкей от 0.0 до 1.0
random.randint - гененерируем целое число в заданном диапазоне.
random.randrange - генерируем целое числов в диапазоне, при этом можем задавать шаг генерации.
random.uniform - генерируем случайное число с плавающей точкой в диапазоне.
👍4
%%time — быстро измеряем время выполнения кода

Этот магический оператор поможет вам легко отслеживать время работы ячейки. Особенно полезен при тестировании изменений в коде. Например, если вы заменили цикл for на более быстрые конструкции (например, enumeration), то с помощью %%time можно наглядно увидеть, насколько ускорился код. Отличный инструмент для проверки эффективности рефакторинга! 🚀

Маленький совет: всегда замеряйте время до и после изменений, чтобы убедиться, что улучшения действительно были.
👍2
Группы исключений — удобство и скорость разработки

В Python есть возможность объединять разные типы ошибок в одну группу и обрабатывать их одинаково. Это делает код чище и сокращает дублирование.

А как вам идея сразу вываливать все возможные причины ошибки на разработчика? Представьте: в одном выводе могут быть и тип ошибки, и некорректное значение — вся информация в одном месте. Это точно ускорит процесс диагностики
__enter__ и __exit__ — контекстные менеджеры в Python

Эти два метода — основа для создания контекстных менеджеров, которые помогают управлять ресурсами, например, файлами или соединениями с базой данных. Они гарантируют, что ресурсы будут освобождены после использования, даже если в процессе работы возникнет ошибка.

Метод __enter__ выполняется при входе в блок with, а __exit__ — при выходе из него. Это позволяет не только управлять ресурсами, но и логировать или выполнять дополнительные действия. Например, можно вывести сообщения при входе и выходе из блока:

class MyContextManager:
def __enter__(self):
print("Входим в блок with")
return self

def __exit__(self, exc_type, exc_value, traceback):
print("Выходим из блока with")

with MyContextManager():
print("Внутри блока with")


Результат:
Входим в блок with
Внутри блока with
Выходим из блока with


Таким образом, контекстные менеджеры делают код более чистым и безопасным, заботясь о ресурсоемких операциях автоматически.
👍1
Улучшенный трейсинг ошибок

Одна из частых проблем новичков при отладке программы — это трудности с интерпретацией трейсбека (описания ошибки), что затрудняет выявление причины проблемы.

Теперь для указания на конкретный объект, который вызвал ошибку, используется строка с несколькими символами ^ (циркумфлекс). В приведённом сниппете мы пытаемся разделить на ноль, что, естественно, приводит к ошибке.
👍2
Телеграмм бот-админ

При использовании команды /post, бот отправляет сообщение, указанное после команды, всем пользователям, чьи ID хранятся в списке joinedUsers.

Итак с помощью некоторой команды, в данном примере /post можно публиковать новости в боте, например:
* важные объявления
* новости
* технические работы/неполадки
* может быть когда то в далеком будующем рекламу)

Когда новый пользователь начинает чат с ботом, его ID добавляется в список joinedUsers, позволяя боту отправлять ему сообщения в будущем.
😭1
Автоматизация отправки электронной почты

Автоматическая отправка email-сообщений может быть полезной в самых разных задачах, от уведомлений до отчетности. Вот пример, как отправить письмо с помощью библиотеки smtplib в Python:

import smtplib
from email.mime.text import MIMEText

# Настройки
sender_email = 'youremail@example.com'
receiver_email = 'receiver@example.com'
password = 'yourpassword'

# Создание письма
msg = MIMEText('Текст вашего сообщения')
msg['Subject'] = 'Тема письма'
msg['From'] = sender_email
msg['To'] = receiver_email

# Отправка письма
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, msg.as_string())

print("Письмо отправлено!")


Теперь вы можете автоматизировать процессы отправки уведомлений или отчетов
👍5