Queue
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
#theory // Just Python
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
#theory // Just Python
Перегрузка операторов
В Python есть поддержка перегрузки операторов — одной из тех штук, о которых говорят все настоящие computer-scientis’ы.
На самом деле идея проста. Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.
Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете.
#theory // Just Python
В Python есть поддержка перегрузки операторов — одной из тех штук, о которых говорят все настоящие computer-scientis’ы.
На самом деле идея проста. Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.
Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете.
#theory // Just Python
__repr__
При определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Например:
>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>
Это сильно упрощает отладку. Вот всё, что вам нужно сделать:
class SomeClass:
def __repr__(self):
return "<какое-то описание>"
some_instance = SomeClass()
# выводит <какое-то описание>
print(some_instance)
repr
__repr__()
позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладstr __str__()
позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.#theory // Just Python
sh
Python — отличный скриптовый язык. Но иногда стандартные библиотеки
Библиотека sh может стать приятной альтернативой. Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
Ссылочка на доку
#theory // Just Python
Python — отличный скриптовый язык. Но иногда стандартные библиотеки
os
и subprocess
вызывают только головную боль.Библиотека sh может стать приятной альтернативой. Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
sh
поддерживает только платформы Linux
и macOS
; для работы на Windows
вам придётся поискать другой инструмент.Ссылочка на доку
#theory // Just Python
wikipedia
У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.
Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным.
Как и настоящий сайт, модуль предоставляет поддержку многих языков, разрешение многозначности страниц, получение случайной страницы и даже метод donate().
#theory // Just Python
У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.
Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным.
Как и настоящий сайт, модуль предоставляет поддержку многих языков, разрешение многозначности страниц, получение случайной страницы и даже метод donate().
#theory // Just Python
Многоточие в Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python:
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали:
Вот валидный код Python, и выглядит он теперь не так уж плохо.
#theory // Just Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python:
>>> ...
Ellipsis
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали:
python
def my_awesome_func():
...
Вот валидный код Python, и выглядит он теперь не так уж плохо.
#theory // Just Python
PyYAML
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
Модуль PyYAML позволяет использовать YAML в Python. PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Ссылочка на доку
#theory // Just Python
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python. PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Ссылочка на доку
#theory // Just Python
Классы данных
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
#theory // Just Python
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
•
возврат нескольких значений или словарей;•
класс данных требует минимального количества кода;•
возможность сравнения классов данных;•
возможность распечатать класс данных для отладки при помощи repr;•
снижение вероятности ошибок в связи с требованием класса данных type hints.#theory // Just Python
Обязательные аргументы
Для принудительного использования аргументов ставьте символ звездочки (
#theory // Just Python
Для принудительного использования аргументов ставьте символ звездочки (
*
) перед ними, заставляя все аргументы стать ключевыми.#theory // Just Python
Декорируем функции
Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.
Внутри
С помощью
#theory // Just Python
Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.
def print_argument(func):
def wrapper(the_number):
print("Argument for",
func.__name__,
"is", the_number)
return func(the_number)
return wrapper
@print_argument
def add_one(x):
return x + 1
print(add_one(1))
Внутри
print_argument
мы определяем функцию-обертку. Она выводит аргумент и имя вызываемой функции, выполняет фактическую функцию и возвращает ее результат, как если бы функция вызывалась «обычно».С помощью
@print_argument
мы применяем наш декоратор к функции. Декоратор может быть повторно использован и для других функций.Argument for add_one is 1
2
#theory // Just Python
Декоратор для автоматического кэширования результатов функций
Кэширование — это техника, которая позволяет значительно улучшить производительность, сохраняя результаты вызовов функций и возвращая кэшированные результаты для одинаковых входных данных.
В Python можно создать декоратор, который автоматически кэширует результаты функций.
#theory // Just Python
Кэширование — это техника, которая позволяет значительно улучшить производительность, сохраняя результаты вызовов функций и возвращая кэшированные результаты для одинаковых входных данных.
В Python можно создать декоратор, который автоматически кэширует результаты функций.
#theory // Just Python
Ленивая инициализация свойств с помощью дескрипторов
Дескрипторы в Python позволяют управлять доступом к атрибутам объекта.
С их помощью можно реализовать ленивую инициализацию свойств, что особенно полезно для дорогостоящих операций, которые нужно выполнять только при первом обращении к свойству.
#theory // Just Python
Дескрипторы в Python позволяют управлять доступом к атрибутам объекта.
С их помощью можно реализовать ленивую инициализацию свойств, что особенно полезно для дорогостоящих операций, которые нужно выполнять только при первом обращении к свойству.
#theory // Just Python
Декоратор для кэширования результатов функций с учетом аргументов
Иногда необходимо кэшировать результаты функции для повышения производительности, особенно если функция выполняет тяжелые вычисления или обращения к внешним ресурсам.
Данный декоратор кэширует результаты функции в зависимости от переданных аргументов, что делает его гибким и эффективным.
#theory // Just Python
Иногда необходимо кэшировать результаты функции для повышения производительности, особенно если функция выполняет тяжелые вычисления или обращения к внешним ресурсам.
Данный декоратор кэширует результаты функции в зависимости от переданных аргументов, что делает его гибким и эффективным.
#theory // Just Python
Использование генераторов для создания бесконечных последовательностей в Python
Генераторы в Python позволяют создавать ленивые последовательности, которые вычисляются по мере необходимости.
Это мощный инструмент для работы с большими или даже бесконечными данными, поскольку генераторы экономят память и ресурсы. Один из интересных и необычных способов использования генераторов — создание бесконечных последовательностей.
#theory // Just Python
Генераторы в Python позволяют создавать ленивые последовательности, которые вычисляются по мере необходимости.
Это мощный инструмент для работы с большими или даже бесконечными данными, поскольку генераторы экономят память и ресурсы. Один из интересных и необычных способов использования генераторов — создание бесконечных последовательностей.
#theory // Just Python
Модификация байт-кода функции в Python с использованием модуля byteplay3
Продвинутые программисты могут использовать модификацию байт-кода для изменения поведения функции на низком уровне.
Это позволяет создавать динамические изменения в функции без её переписывания на уровне исходного кода. В Python можно использовать модуль byteplay3 для работы с байт-кодом.
Ссылочка на доку
#theory // Just Python
Продвинутые программисты могут использовать модификацию байт-кода для изменения поведения функции на низком уровне.
Это позволяет создавать динамические изменения в функции без её переписывания на уровне исходного кода. В Python можно использовать модуль byteplay3 для работы с байт-кодом.
Ссылочка на доку
#theory // Just Python
Управление временем выполнения функций с помощью тайм-аутов в Python
Иногда требуется ограничить время выполнения функции, чтобы предотвратить зависание или длительное выполнение задачи.
В Python можно использовать модуль
#theory // Just Python
Иногда требуется ограничить время выполнения функции, чтобы предотвратить зависание или длительное выполнение задачи.
В Python можно использовать модуль
signal
для установки тайм-аутов на выполнение кода.#theory // Just Python
Извлечение уникальных элементов из списка с сохранением порядка
Обычно, когда нужно получить уникальные элементы из списка, используют set. Однако это нарушает порядок элементов.
Чтобы извлечь уникальные элементы, сохраняя их порядок, можно использовать следующую технику:
#theory // Just Python
Обычно, когда нужно получить уникальные элементы из списка, используют set. Однако это нарушает порядок элементов.
Чтобы извлечь уникальные элементы, сохраняя их порядок, можно использовать следующую технику:
Используем список для обхода элементов и set, чтобы отслеживать уже встреченные элементы, избегая их дублирования.
Используем однострочный list comprehension с условием, которое добавляет элемент в результирующий список только если он ещё не был добавлен.#theory // Just Python
Использование contextlib.contextmanager для создания контекстных менеджеров
Иногда бывает нужно создать собственный контекстный менеджер для управления ресурсами, такими как файлы или сетевые соединения.
В Python для этого можно использовать декоратор
#theory // Just Python
Иногда бывает нужно создать собственный контекстный менеджер для управления ресурсами, такими как файлы или сетевые соединения.
В Python для этого можно использовать декоратор
contextlib.contextmanager
, что делает код простым и элегантным.#theory // Just Python
Forwarded from Reddit
Традиционный январский розыгрыш iPhone 16 Pro Max
Для участие необходимо быть подписанным на:
• @reddit
Не забудьте нажать кнопку «Участвовать» под постом!
Итоги будут уже в понедельник, 26 января, в 20:00 по московскому времени. Победителя случайно выберет рандомайзер
Приз абсолютно бесплатно отправим победителю в зоне доставки СДЭК, платить не надо. Всем удачи!
Для участие необходимо быть подписанным на:
Не забудьте нажать кнопку «Участвовать» под постом!
Итоги будут уже в понедельник, 26 января, в 20:00 по московскому времени. Победителя случайно выберет рандомайзер
Приз абсолютно бесплатно отправим победителю в зоне доставки СДЭК, платить не надо. Всем удачи!
Декоратор для измерения времени выполнения функции в Python
В Python можно легко измерять время выполнения функций с помощью декораторов. Этот подход удобен для анализа производительности и оптимизации кода.
Декоратор оборачивает функцию и измеряет время ее выполнения, выводя результат на экран. Это позволяет легко оценить производительность различных участков кода.
Декоратор
#theory // Just Python
В Python можно легко измерять время выполнения функций с помощью декораторов. Этот подход удобен для анализа производительности и оптимизации кода.
Декоратор оборачивает функцию и измеряет время ее выполнения, выводя результат на экран. Это позволяет легко оценить производительность различных участков кода.
Декоратор
time_it
может использоваться для любых функций, без изменения их логики, что делает его удобным инструментом для анализа производительности.#theory // Just Python