🐍 Укус питона 🐍
2.57K subscribers
1.01K photos
23 videos
285 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Что выведет этот код?
Anonymous Quiz
50%
0 1
18%
1 2
23%
Ошибку
8%
Узнать ответ
Почему Python востребован среди DevOps-инженеров?

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

👉 У Python понятный синтаксис, разрабатывать на нём быстро.
👉 В нём есть куча библиотек.
👉 Python отлично справляется с автоматизацией задач, работой с API, управлением инфраструктурой (например, через Ansible), а также с написанием скриптов для CI/CD пайплайнов и мониторинга.

Всё это делает его удобным для использования в сложных DevOps-проектах.

Узнать, насколько хорошо вы владеете Python, можно в нашем тесте. Переходите в бота и отвечайте на 5 вопросов🔗

#реклама
О рекламодателе
erid: LjN8KAkrn
✈️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 отслеживает изменения в моделях и генерирует миграционные файлы, которые можно применить к базе данных. Это значительно упрощает процесс разработки и поддержки приложения.
💩 Какова разница между методами 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 не находит атрибут.
Что выведет код?
Anonymous Quiz
28%
True
57%
False
5%
None
3%
0
8%
Ошибку
Что выведет этот код?
Anonymous Quiz
1%
1 2
76%
1 2 3
12%
Ошибку
10%
Узнать ответ
Что выведет этот код?
Anonymous Quiz
51%
True
10%
False
39%
Ошибку
0%
Узнать ответ
✈️Конструкция 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 мы пытаемся выполнить деление, и если возникает ошибка, мы перехватываем её и выводим сообщение об ошибке.
Что выведет этот код?
Anonymous Quiz
19%
True
15%
False
54%
Ошибку
12%
Узнать ответ