en
Feedback
Инсайты & Укус Питона

Инсайты & Укус Питона

Open in Telegram

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

Show more
8 682
Subscribers
No data24 hours
-167 days
-5630 days
Posts Archive
✈️Конструкция raise используется для генерации исключений. Когда в коде происходит что-то непредвиденное или некорректное — м
✈️Конструкция raise используется для генерации исключений. Когда в коде происходит что-то непредвиденное или некорректное — можно сгенерировать исключение командой raise. ➡️Основные моменты конструкции raise: —Возбуждение существующих исключений: Вы можете использовать raise без каких-либо параметров в блоке except, чтобы повторно вызвать текущее исключение. —Создание собственных исключений: Вы можете создать или вызвать собственное исключение, создав объект исключения и передав его в raise. ➡️Пример использования raise:
def divide(a, b):
    if b == 0:
        raise ValueError("Деление на ноль невозможно.")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(f"Ошибка: {e}")
⬆️В этом примере функция divide вызывает исключение ValueError, если второй аргумент равен нулю. В блоке try мы пытаемся выполнить деление, и если возникает ошибка, мы перехватываем её и выводим сообщение об ошибке.

💩 Какова разница между методами getattr и getattribute? Оба этих метода являются магическими. 🔘getattr

class Missing:
    attr = 42

    def getattr(self, name):
        print(f"In getattr, asked for {name}")
        return 73

m = Missing()
print(m.attr)  # 42
print(m.xyz)  # In getattr, asked for xyz; 73
Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz. 🔘getattribute

class Always:
    attr = 42

    def getattribute(self, name):
        print(f"In getattribute, asked for {name}")
        return 73

a = Always()
print(a.attr)  # In getattribute, asked for attr; 73
print(a.xyz)  # In getattribute, asked for xyz; 73
Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz). ✅ Таким образом, getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.

✈️Django ORM (Object-Relational Mapping) — это мощный инструмент, который позволяет разработчикам взаимодействовать с базой данных, используя объекты Python. ➡️Создание моделей Одним из основных аспектов работы с Django ORM является создание моделей. Модель — это класс Python, который описывает структуру таблицы в базе данных. Django ORM автоматически создает таблицу в соответствии с заданной моделью. Модели могут включать поля, которые соответствуют столбцам таблицы, а также методы и связи с другими моделями. Определение модели в Django ORM интуитивно понятно и упрощает процесс разработки. Вот пример создания модели в Django ORM:
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    description = models.TextField()
➡️Запросы к базе данных С помощью Django ORM можно выполнять различные типы запросов, включая выборку данных, фильтрацию, сортировку и агрегирование. Вот несколько примеров основных команд для выполнения запросов в Django ORM:
# Выборка всех объектов модели
products = Product.objects.all()

# Фильтрация объектов по условию
cheap_products = Product.objects.filter(price__lt=10)

# Сортировка объектов
sorted_products = Product.objects.order_by('-price')

# Агрегирование данных
total_price = Product.objects.aggregate(Sum('price'))
➡️Миграции базы данных Еще одно важное преимущество Django ORM — это автоматическое создание и применение миграций базы данных. Миграции позволяют легко изменять структуру базы данных, добавлять новые таблицы, поля или изменять существующие. Django ORM отслеживает изменения в моделях и генерирует миграционные файлы, которые можно применить к базе данных. Это значительно упрощает процесс разработки и поддержки приложения.

✈️Функция range() в Python - это важный инструмент для создания последовательности чисел. Хотя она часто используется в связк
✈️Функция range() в Python - это важный инструмент для создания последовательности чисел. Хотя она часто используется в связке с циклом for, есть и другие способы, как можно использовать эту функцию. ➡️Использование range() в списковых включениях Списковые включения - это мощный инструмент Python, который позволяет создавать списки в одну строку кода. Функция range() может быть использована в списковых включениях для создания списков, которые следуют определенной числовой последовательности. Например, [x for x in range(10)] создаст список чисел от 0 до 9. ➡️Использование range() в генераторах Генераторы в Python - это специальный тип итераторов, который позволяет генерировать элементы "на лету", экономя память. Функцию range() можно использовать в генераторах для создания последовательностей чисел. Например, (x for x in range(10)) создаст генератор, который производит числа от 0 до 9. 🐍Pythoner

➡️Что такое importlib? Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью
➡️Что такое importlib? Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью вы можете программно импортировать модули, перезагружать их и даже создавать свои собственные импортеры! ➡️Вот простой пример использования importlib:
import importlib

# Динамический импорт модуля
math = importlib.import_module('math')

# Использование импортированного модуля
print(math.pi)  # Выводит 3.141592653589793

# Перезагрузка модуля
importlib.reload(math)
➡️С importlib вы можете: • Динамически импортировать модули • Перезагружать модули во время выполнения • Создавать пользовательские импортеры • Работать с пространствами имен пакетов 🔎Эта библиотека особенно полезна при разработке плагинов, создании расширяемых приложений или отладке кода.