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

Часто словари используют как таблицы для хранения данных. Однако сортировка элементов словаря по значениям, а не по ключам, может вызвать затруднения. Эта задача решается легко с помощью аргумента key в функции сортировки. Просто передайте в sorted() или sort() функцию, которая будет извлекать значения для сортировки, и данные окажутся упорядочены по нужному критерию.
👍9
Сегодня не только день, когда стоит поздравить замечательных женщин, но и отличный момент, чтобы напомнить себе, как важно в программировании находить баланс и гармонию, как в коде, так и в жизни. 💐

Совет для кодеров: как и в алгоритмах, иногда нужно делать паузу, пересматривать подходы и обновлять переменные — будь то в проекте или в жизни. Пусть этот день вдохновит вас на новые идеи и творческие решения!

Вот небольшой скрипт на Python, который может поздравить всех с 8 марта, генерируя случайное поздравление из заранее подготовленных фраз. Можно использовать, чтобы отправить приятное сообщение друзьям или коллегам-разработчикам.

import random

def поздравление_с_8марта():
поздравления = [
"С 8 марта! Пусть каждый день будет полон радости и вдохновения!",
"С 8 марта! Пусть код компилируется с первого раза, а баги исчезают сами!",
"С 8 марта! Желаю море позитива, улыбок и безупречного кода!",
"С 8 марта! Пусть каждый новый проект будет успешным, а время всегда хватает на отдых!",
"С 8 марта! Пусть алгоритмы счастья всегда приводят к нужному результату!"
]

# Выбираем случайное поздравление
поздравление = random.choice(поздравления)
return поздравление

# Печать случайного поздравления
print(поздравление_с_8марта())


Этот скрипт создаст одно случайное поздравление и выведет его на экран. Можно запустить его в любой момент, чтобы поздравить кого-то с праздником.

💐 Полезный совет: Подобные скрипты — отличная возможность добавить немного веселья в ваш рабочий процесс.
👍4
Назначение переменных и функций по условию

Иногда условия if бывают настолько простыми, что кажется излишним выделять для них отдельные строки кода. В таких случаях удобно использовать тернарный оператор if/else, который позволяет записать условие в одну строку.
Это упрощает код и делает его более компактным, особенно когда нужно вернуть одно значение в зависимости от условия.
👍5
Разность множеств в Python

В Python вычислить разность между множествами можно двумя способами: с помощью оператора - или метода difference(). Например, если есть два множества — A и B, то разность A-B вернёт все элементы из A, которых нет в B.
🔥2
🔧 Модуль tqdm: простой способ отслеживать прогресс выполнения

Если ваш код работает долго, вам, наверное, знакомо чувство неопределенности — «черный ящик», где неясно, на каком этапе находится выполнение. В этом поможет tqdm! Этот модуль генерирует информативные прогресс-бары, которые показывают не только текущий прогресс, но и оставшееся время до завершения.

Теперь можно в реальном времени отслеживать выполнение программы прямо в консоли, без лишних догадок. Отличное решение для всех, кто хочет всегда быть в курсе процесса.👌
👍6
🧑‍💻 Функция re.match()

Функция re.match() используется для поиска совпадений шаблона только в начале строки. Это значит, что она проверяет, начинается ли строка с заданного паттерна.
🔄 Функция re.sub()

Функция re.sub() позволяет заменять части строки, которые соответствуют заданному шаблону. Это полезно, когда нужно выполнить массовую замену или очистку данных.

Она принимает три обязательных аргумента: шаблон, строку для замены и саму строку, в которой будет происходить замена.

Пример:
import re
result = re.sub(r"\d+", "#", "У меня 3 яблока и 5 апельсинов")
print(result)

Вывод:
У меня # яблока и # апельсинов


Это заменит все числовые значения на символ #. В результате, вы получаете обновленную строку с замененными фрагментами.
👍6❤1
🛠 Создание объектов с поддержкой `with`

В Python можно создать свои собственные объекты, которые будут поддерживать механизм управления контекстом с помощью оператора with. Это полезно, если нужно реализовать кастомное поведение, например, для работы с ресурсами (файлы, соединения с базой данных и т.д.).

Для этого необходимо реализовать два магических метода:

- __enter__() — вызывается при входе в блок with.
- __exit__() — вызывается при выходе из блока with.
👍7❤1
💡 Экономия памяти с помощью `__slots__`

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

Для оптимизации использования памяти можно воспользоваться специальным атрибутом `__slots__`. Он позволяет указать, какие атрибуты будут у объекта, и вместо создания словаря для хранения атрибутов, Python выделяет фиксированное пространство для этих атрибутов, что значительно снижает потребление памяти.

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

class MyClass:
__slots__ = ['name', 'age'] # Указываем только необходимые атрибуты

def __init__(self, name, age):
self.name = name
self.age = age

# Создаем экземпляр
obj = MyClass("Alice", 30)

# Пытаемся добавить новый атрибут (будет ошибка)
# obj.city = "New York" # AttributeError: 'MyClass' object has no attribute 'city'

print(obj.name, obj.age) # Alice 30


Что происходит с __slots__:
- В примере указаны только атрибуты name и age, поэтому для каждого объекта этих классов будет выделено ровно столько памяти, сколько нужно для хранения этих двух атрибутов.
- Если попытаться добавить новый атрибут, возникнет ошибка, так как больше памяти для дополнительных атрибутов не выделяется.

🌟 Преимущества использования `__slots__`:
1. Экономия памяти — исключает создание словаря для хранения атрибутов.
2. Повышение производительности — уменьшает количество работы при доступе к атрибутам.

❗️ Важно помнить:
- Если вам нужно добавить новый атрибут позже, лучше не использовать __slots__, так как это ограничивает динамическое добавление новых свойств.
- __slots__ не работает с наследованием, если класс-наследник не указывает свои собственные слоты.

Этот подход идеален для ситуаций, когда нужно создавать огромное количество объектов, но при этом не требуются динамические атрибуты или особенная гибкость.
🔥1
🚀 Функция `any()` и `all()` в Python

Вы когда-нибудь сталкивались с задачей проверки условий для нескольких элементов в списке или другом итерируемом объекте? Для таких случаев в Python есть удобные функции `any()` и `all()`.

- `any()` возвращает True, если хотя бы одно из условий истинно.
- `all()` возвращает True, если все условия истинны.

Пример:
numbers = [1, 2, 3, 4]

# Проверка, есть ли хотя бы одно четное число
print(any(n % 2 == 0 for n in numbers)) # True

# Проверка, все ли числа четные
print(all(n % 2 == 0 for n in numbers)) # False


Эти функции позволяют элегантно проверять логические условия для целых коллекций данных в одну строку. Попробуйте их в следующих задачах для удобства!
🔥10👍1
📰 Модуль newspaper3k

Модуль newspaper3k — это мощный инструмент для извлечения статей и мета-данных из различных источников. Он позволяет автоматически собирать текст, изображения, авторов и другие данные прямо из веб-страниц. Вдобавок, модуль включает встроенную поддержку для обработки текста с использованием NLP (обработки естественного языка), что упрощает анализ и извлечение информации.
❤6
Возврат нескольких значений

Функции в 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` — это то, что нужно