Django и Python

Раздел про веб-разработку.
Делюсь знаниями и опытом.

647 0

Добавление условного индекса с конкурентностью


Бывает приходится добавлять "забытые" индексы когда таблица уже разрослась так, что поиск без индекса становится проблемой.
Хорошо конечно такие ситуации продумывать на этапе проектирования, но практика показывает, что люди ошибаются, …

Читать далее
1124 0

Изменение названия файлов при сохранении

Работая с разными людьми понял, что требовать от обычного человека загружать файлы на сайт в латинской транслитерации бесполезно.
Все равно загрузят с русскими а порой и со служебными символами.
Поэтому …

Читать далее
1794 0

Заполнение поля datetime с auto_now_add в тестах

В процессе разработки тестов, иногда возникает необходимость, записать
в поле DateTimeFiled с параметром auto_now_add=True свою дату и время отличные от текущего.
Некоторые ради такой возможности даже отказываются от использования auto_now_add. 0_о
Но так делать не надо. Можно сделать так:


from datetime import datetime
from django.utils import timezone
from unittest import mock

def test_auto_now_add(self):
    mocked = datetime(207, 11, 26, 0, 0, 0)
    with mock.patch('django.utils.timezone.now', mock.Mock(return_value=mocked)):
        MyModel.object.create(
            ...
            created_at=timezone.now()
            ...
        )


В результате получим нужную дату и время в нашем поле

1911 0

Разбор задачи со списком списков

Задача из серии, что будет в результате выполнения кода.
Тут словами объяснять, только хуже делать, поэтому привожу визуализацию того как выполняется код из задачи.

 a = [[]]*3
 a[1].append(1)
 print(a)

После …

Читать далее
1513 0

Литеральный синтаксис быстрее чем вызов конструкторов словарей и множеств

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

Варианты …

Читать далее
1395 0

Упорядоченный список событий в python

В каком виде лучше всего хранить список событий в python.
Чаще всего я видел, что хранят в виде списка словарей.
Что-нибудь типа такого:

dt = datetime(2007, 11, 26, 0, 0) …
Читать далее
2362 1

Декоратор внутри класса - это возможно!

Про декораторы знают все и как их делать написано много уже где.
Но вот про декораторы в рамках класса с доступом к параметрам класса надо еще поискать.
Декоратор внутри класса …

Читать далее
1890 1

Генераторы и итераторы не всегда быстрее обычного for`а

Среди коллег разработчиков на python бытует мнение что генераторы и итераторы быстрее, чем перебор for`ом
Но это не всегда так. 
Вот пример:


def sum_times():
    ch = ['bad', 'good']
    data_list = …
Читать далее
1664 0

Скорость конкатенации строк и списков

Без лишних слов замеряем скорость конкатенации строк:
 def concat_times():
    x = 'abc' * 10000
    y = 'def' * 10000
 
    time_start = datetime.datetime.now()
    z = x + y
    print(f'"+" Elapsed: {datetime.datetime.now() …
Читать далее
3569 0

Последние изменения в стандартной библиотеке Python

Это копия статьи с Хабра.

Мне информация показалась полезной потому сохраню у себя на память.

---

Python 3.8+

Как изменилась стандартная библиотека Python за последние годы

Когда выходит очередная версия Python, все внимание достается новым фичам языка: моржовому оператору, слиянию словарей, паттерн-матчингу. Еще много пишут об изменениях в асинхронной работе (модуль asyncio) и типизации (модуль typing) — эти модули на виду и бурно развиваются.

Остальным модулям стандартной библиотеки достается незаслуженно мало внимания. Хочу это исправить и рассказать, что интересного появилось в версиях 3.8–3.10.

Читать далее

Контактные данные

 Россия, г. Москва