Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Что выведет код?
Anonymous Quiz
4%
8
17%
(8,7)
22%
()
57%
Error
Функция contextmanager()

Функция contextmanager() модуля contextlib представляет собой декоратор, который можно использовать для определения фабричной функции для оператора контекстных менеджеров with без необходимости создавать класс или отдельные методы enter() и exit().

Хотя многие объекты изначально поддерживают использование в операторах with, иногда необходимо управлять ресурсом, который сам по себе не является диспетчером контекста и не реализует метод close() для использования с функцией contextlib.closing().
Что выведет код?
Anonymous Quiz
29%
I LOVE PYTHON
60%
I Love Python
6%
None
5%
Error
Модуль mmap

Модуль mmap обеспечивает ввод и вывод файла с отображением памяти (I/O), что позволяет использовать функциональные возможности операционной системы более низкого уровня для чтения файлов.

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

В приведенном выше примере:

1)Сначала мы импортируем модуль mmap.

2)Затем определяем путь к файлу на диске.

3)Затем мы создаем объект file_object с помощью системного вызова open().

4)После получения объекта file мы создаем отображение файла в адресное пространство программы с помощью функции mmap.

5)Затем мы считываем данные из объекта mmap.

6)И распечатываем данные.
Что выведет код?
Anonymous Quiz
8%
[3]
9%
[8]
44%
[7]
39%
Error
Функция zip_longest()

Функция zip_longest() модуля itertools создает итератор, который объединяет элементы из каждой итерируемой последовательности iterables в кортежи.

Отличие функции zip_longest() от встроенной функции zip() заключается в том, что zip() останавливается по исчерпании самой короткой входной последовательности и отбрасывает несопоставимые значения более длинных итераций, в то время как zip_longest() работает пока самая длинная итерация не будет исчерпана, а пропущенные элементы заполняются значением fillvalue.
Что выведет код?
Anonymous Quiz
14%
6
49%
9
8%
7
28%
Error
Функция nlargest()

Функция nlargest() модуля heapq возвращает список с n самыми большими элементами из набора данных, определенного с помощью итерируемой последовательности iterable.

Аргумент key, если он указан, определяет функцию с одним аргументом, которая используется для извлечения ключа сравнения из каждого элемента в итерируемой последовательности iterable, например key=str.lower. Значением по умолчанию является None, что означает сравнение элементов напрямую.

Функция nlargest() эквивалентна вызову sorted(iterable, key=key, reverse=True)[:n].

Работает лучше для маленьких значений n. Для больших значений более эффективно использовать функцию sorted(). Также, когда n=1, более эффективно использовать встроенную функцию max().

Если требуется повторное использование функции heapq.nlargest(), рассмотрите возможность преобразования последовательности iterable в реальную кучу.
Функция hasattr()

Функция hasattr() проверяет существование атрибута с именем name в объекте object. Возвращает True, если атрибут с именем name существует, иначе False.

Реализация функция hasattr() основывается на вызове функции getattr() с последующей проверкой на предмет брошенного ей исключения AttributeError.
Класс weakref.WeakKeyDictionary()

Класс weakref.WeakKeyDictionary() представляет собой словарь, который слабо ссылается на ключи. Записи в словаре будут отброшены, если нет более сильной ссылки на ключ.

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

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

Модуль называется "bisect", потому что он использует базовый алгоритм деления пополам для выполнения своей работы. Исходный код может быть наиболее полезным в качестве рабочего примера алгоритма.
Функция super()

Функция super(), возвращает объект объект-посредник, который делегирует вызовы метода родительскому или родственному классу, указанного type типа. Это полезно для доступа к унаследованным методам, которые были переопределены в классе.
Что выведет код?
Anonymous Quiz
11%
x
5%
z
29%
a
16%
c
39%
Error
Функция frozenset

Функция frozenset это неупорядоченный набор отдельных хешируемых объектов. Frozenset – неизменяемый набор, поэтому его содержимое не может быть изменено после его создания.

Функция frozenset() используется для создания объекта frozenset.