
Инсайты & Укус Питона
@smarttechaiinsights
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.
Похожие каналы
Все →Последние посты




💩 Какова разница между методами getattr и getattribute?Оба этих метода являются магическими. 🔘getattrclass Missing: attr = 42 def getattr(self, name): print(f"In getattr, asked for {name}") return 73m = Missing()print(m.attr) # 42print(m.xyz) # In getattr, asked for xyz; 73Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.🔘getattributeclass Always: attr = 42 def getattribute(self, name): print(f"In getattribute, asked for {name}") return 73a = Always()print(a.attr) # In getattribute, asked for attr; 73print(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 modelsclass 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 - это важный инструмент для создания последовательности чисел. Хотя она часто используется в связке с циклом 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:import importlib# Динамический импорт модуляmath = importlib.import_module('math')# Использование импортированного модуляprint(math.pi) # Выводит 3.141592653589793# Перезагрузка модуляimportlib.reload(math)➡️С importlib вы можете:• Динамически импортировать модули• Перезагружать модули во время выполнения• Создавать пользовательские импортеры• Работать с пространствами имен пакетов🔎Эта библиотека особенно полезна при разработке плагинов, создании расширяемых приложений или отладке кода.