Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Библиотека Jedi
Библиотека
для автодополнения и анализа кода помогает ускорить процесс написания программ, улучшая продуктивность разработчика. Одной из полезных возможностей, которую она может предложить, является работа с kwargs.

Когда перед объектом словаря ставятся две звёздочки (например, **my_dict), его содержимое передаётся в функцию как именованные аргументы. Ключи словаря становятся именами аргументов, а значения — их значениями. Причём вам не нужно обязательно использовать имя kwargs — это может быть любое название.
❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
yt-dlg

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

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

➡️ Cсылка на GitHub
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
BiRefNet: Нейросеть для умной сегментации изображений

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

Она будет отличным решением для разработчиков, которым нужно бесплатное, но мощное средство для работы с изображениями.

Модель поддерживает множество вариантов применения, от сегментации портретов до обнаружения скрытых объектов и многого другого.

BiRefNet легко интегрируется в различные приложения, а её модели можно найти на таких платформах, как Hugging Face и fal.ai, что делает её доступной для разработчиков по всему миру.

Совет: Если хотите провести быструю обработку изображений, BiRefNet — идеальный выбор для ваших проектов!

➡️ Cсылка на GitHub
👍2
Перегрузка операторов в Python

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

🎯 Интересный факт: перегрузка операторов помогает улучшить читаемость и выразительность кода, когда вы работаете с собственными классами.
👍3
Библиотека sh

Позволяет вызывать любые внешние программы как обычные функции прямо в коде Python. Это делает её идеальным инструментом для автоматизации различных задач и интеграции сторонних утилит без необходимости писать сложный код для работы с процессами. С помощью sh можно легко взаимодействовать с операционной системой и сторонними сервисами, повышая эффективность разработки и ускоряя рабочие процессы.
👍10
Срезы — это мощный инструмент в Python для работы с итерируемыми объектами, такими как строки, списки и кортежи. С их помощью можно извлекать определённые части объектов, не изменяя их исходное состояние. Срезы позволяют гибко манипулировать данными, быстро выделяя подмножества, что делает работу с коллекциями более удобной и эффективной.
❤‍🔥5❤1
Пересечение множеств позволяет получить только те элементы, которые присутствуют одновременно в двух или более множествах. Для этого в Python можно использовать метод intersection(), который возвращает новое множество, содержащее общие элементы.

Это полезный инструмент для работы с данными, когда нужно выделить пересекающиеся элементы из разных коллекций.
👍6❤‍🔥3
Объединение коллекций в Python позволяет объединить элементы нескольких коллекций в одну. Для множеств используется метод union(), который возвращает новое множество, содержащее все уникальные элементы из исходных коллекций.

Однако стоит отметить, что кортежи — это неизменяемые последовательности, и для их объединения нужно использовать операторы + или методы, такие как tuple() для преобразования других коллекций в кортежи.
👍3
Модуль uuid (https://docs.python.org/3/library/uuid.html) в Python предоставляет быстрый и простой способ генерации UUID (универсально уникальных идентификаторов).

Эти идентификаторы часто используются для создания уникальных ключей в базах данных, меток для объектов или при идентификации различных сущностей в распределённых системах.
❤2
Функция map() в Python применяет указанную функцию к каждому элементу итерируемого объекта (например, строки, списка или кортежа).

В нашем примере, если нужно преобразовать элементы в целые числа, то в качестве функции будет использоваться int. Функция map() возвращает итератор, который можно преобразовать в список с помощью функции list(), чтобы получить результаты в виде коллекции.
👍6👎1
Вот пример скрипта, который можно использовать для создания викторины или интерактивного опроса:

import random

# Список вопросов для викторины
questions = [
{
"question": "Какой цветок традиционно ассоциируется с 8 марта?",
"answers": ["Роза", "Тюльпан", "Лилия", "Ромашка"],
"correct_answer": "Тюльпан"
},
{
"question": "В каком году был установлен Международный женский день?",
"answers": ["1908", "1910", "1912", "1920"],
"correct_answer": "1908"
},
{
"question": "Какая фраза стала символом женского движения?",
"answers": ["«Мир и свобода!»", "«Равенство для всех!»", "«Труд и свобода!»", "«Долой угнетение!»"],
"correct_answer": "«Равенство для всех!»"
}
]

def ask_question():
question = random.choice(questions)
print(question["question"])
for idx, ans in enumerate(question["answers"], 1):
print(f"{idx}. {ans}")

user_answer = input("Ваш ответ (введите номер): ")
if question["answers"][int(user_answer) - 1] == question["correct_answer"]:
print("Правильно! 🎉")
else:
print(f"Неправильно! Правильный ответ: {question['correct_answer']}.")

ask_question()
👍5
Сортировка словаря по значениям

Часто словари используют как таблицы для хранения данных. Однако сортировка элементов словаря по значениям, а не по ключам, может вызвать затруднения. Эта задача решается легко с помощью аргумента 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