Forwarded from Python Education
Процесс делегирования в Python
Делегирование – это объектно-ориентированный подход, также называемый паттерном проектирования.
Предположим, у вас есть объект x, и вы хотите изменить поведение только одного из его методов. Вы можете создать новый класс, предоставляющий новую реализацию метода, который вы хотите изменить, и делегирующий все остальные методы соответствующим методам объекта x.
В примере показан класс, охватывающий поведение файла и преобразующий данные из нижнего в верхний регистр
Метод write() в классе upcase конвертирует строку из нижнего в верхний регистр до вызова другого метода. Собственно сама делегация осуществляется за счет использования объекта self. out.
Делегирование – это объектно-ориентированный подход, также называемый паттерном проектирования.
Предположим, у вас есть объект x, и вы хотите изменить поведение только одного из его методов. Вы можете создать новый класс, предоставляющий новую реализацию метода, который вы хотите изменить, и делегирующий все остальные методы соответствующим методам объекта x.
В примере показан класс, охватывающий поведение файла и преобразующий данные из нижнего в верхний регистр
Метод write() в классе upcase конвертирует строку из нижнего в верхний регистр до вызова другого метода. Собственно сама делегация осуществляется за счет использования объекта self. out.
Forwarded from Python Education
Метод islower
Метод str.islower() возвращает True, если все символы в строке имеют нижний регистр (строчные), при этом строка не должна быть пустой, то есть должна иметь хотя бы один символ в нижнем регистре и не состоять из одних пробелов.
Метод str.islower() во всех других случаях возвращает False.
Строка состоящая из символов не имеющих возможности приведение к нижнему регистру также будет возвращать False.
Для приведения символов строки к верхнему регистру используйте метод str.lower().
Метод str.islower() возвращает True, если все символы в строке имеют нижний регистр (строчные), при этом строка не должна быть пустой, то есть должна иметь хотя бы один символ в нижнем регистре и не состоять из одних пробелов.
Метод str.islower() во всех других случаях возвращает False.
Строка состоящая из символов не имеющих возможности приведение к нижнему регистру также будет возвращать False.
Для приведения символов строки к верхнему регистру используйте метод str.lower().
Forwarded from Python Education
Удаление специальных символов при помощи join() и filter()
Давайте воспользуемся методом соединения join(). Откройте ваш файл и инициализируйте строку с обычными и специальными символами. Первоначальная строка будет выводиться на экран первой.
Далее мы используем метод join() с функцией filter() для строковой переменной v1, чтобы отфильтровать символы. В данном случае для сбора только обычных символов из переменной v1 используется метод isalnum().
Давайте воспользуемся методом соединения join(). Откройте ваш файл и инициализируйте строку с обычными и специальными символами. Первоначальная строка будет выводиться на экран первой.
Далее мы используем метод join() с функцией filter() для строковой переменной v1, чтобы отфильтровать символы. В данном случае для сбора только обычных символов из переменной v1 используется метод isalnum().
Forwarded from Python Education
Функция contextmanager()
Функция contextmanager() модуля contextlib представляет собой декоратор, который можно использовать для определения фабричной функции для оператора контекстных менеджеров with без необходимости создавать класс или отдельные методы enter() и exit().
Хотя многие объекты изначально поддерживают использование в операторах with, иногда необходимо управлять ресурсом, который сам по себе не является диспетчером контекста и не реализует метод close() для использования с функцией contextlib.closing().
Функция contextmanager() модуля contextlib представляет собой декоратор, который можно использовать для определения фабричной функции для оператора контекстных менеджеров with без необходимости создавать класс или отдельные методы enter() и exit().
Хотя многие объекты изначально поддерживают использование в операторах with, иногда необходимо управлять ресурсом, который сам по себе не является диспетчером контекста и не реализует метод close() для использования с функцией contextlib.closing().
Forwarded from Python Education
math.isclose
Метод math.isclose() проверяет, близки ли два значения друг к другу или нет. Возвращает True, если значения близки, иначе False. Близость двух значений определяется в соответствии с заданными абсолютными и относительными допусками. Относительная допуск — это максимально допустимая разница между двумя числами. Значение по умолчанию: 1e-09. Абсолютный допуск используется для сравнения значений, близких к 0. Значение должно быть не менее 0.
Метод math.isclose() проверяет, близки ли два значения друг к другу или нет. Возвращает True, если значения близки, иначе False. Близость двух значений определяется в соответствии с заданными абсолютными и относительными допусками. Относительная допуск — это максимально допустимая разница между двумя числами. Значение по умолчанию: 1e-09. Абсолютный допуск используется для сравнения значений, близких к 0. Значение должно быть не менее 0.
Forwarded from Python Education
Вычисляем размер объектов в памяти
Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.
Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.
Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .
Функция getsizeof вызывает метод sizeof объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.
Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.
Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.
Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .
Функция getsizeof вызывает метод sizeof объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.
Forwarded from Python Education
Как эффективно по отношению к памяти сравнить два неупорядоченных списка
Давайте предположим, что у вас есть два списка, которые содержат одинаковые элементы. Однако эти элементы стоят в разном порядке.
Два списка содержат одни и те же элементы, а вот их порядок отличается. Давайте посмотрим, как мы можем удостовериться, что перед нами два одинаковых списка.
• Мы можем использовать метод collections.Counter
• Можно использовать sorted(), если объекты поддаются порядку.
Давайте предположим, что у вас есть два списка, которые содержат одинаковые элементы. Однако эти элементы стоят в разном порядке.
Два списка содержат одни и те же элементы, а вот их порядок отличается. Давайте посмотрим, как мы можем удостовериться, что перед нами два одинаковых списка.
• Мы можем использовать метод collections.Counter
• Можно использовать sorted(), если объекты поддаются порядку.
Forwarded from Python Education
Функция ascii() в Python
Функция ascii() в Python возвращает строковое представление объекта. Эта функция внутренне вызывает функцию repr() и перед возвратом строки представления экранирует символы, отличные от ASCII, с помощью экранирования x, u или U.
Python ascii() является встроенной функцией и принимает единственный аргумент. Этот аргумент может быть любым примитивным типом данных или объектом. Мы также можем передать в качестве аргумента list, dict или tuple. В этих случаях метод ascii() будет вызываться для элементов коллекции, и будет возвращено строковое представление.
Функция ascii() в Python возвращает строковое представление объекта. Эта функция внутренне вызывает функцию repr() и перед возвратом строки представления экранирует символы, отличные от ASCII, с помощью экранирования x, u или U.
Python ascii() является встроенной функцией и принимает единственный аргумент. Этот аргумент может быть любым примитивным типом данных или объектом. Мы также можем передать в качестве аргумента list, dict или tuple. В этих случаях метод ascii() будет вызываться для элементов коллекции, и будет возвращено строковое представление.
Forwarded from Python Education
Collections.counter
Collections.counter – это метод отображения, который содержит целое число для каждого ключа. Обновление существующего ключа увеличивает его количество. Это можно использовать для подсчета экземпляров хешируемых объектов (ключей). Также можно использовать как мультимножество — набор, содержащий несколько экземпляров каждого элемента. В данном примере демонстрируется работа most common([n]), который возвращает упорядоченный список кортежей с n наиболее распространенными элементами и их количеством.
Collections.counter – это метод отображения, который содержит целое число для каждого ключа. Обновление существующего ключа увеличивает его количество. Это можно использовать для подсчета экземпляров хешируемых объектов (ключей). Также можно использовать как мультимножество — набор, содержащий несколько экземпляров каждого элемента. В данном примере демонстрируется работа most common([n]), который возвращает упорядоченный список кортежей с n наиболее распространенными элементами и их количеством.
Forwarded from Python Education
Format map
Метод format map() заменяет все ключи в строке значением. Это вернет новую строку со всеми сделанными заменами, если это возможно. У данного метода есть некоторые отличия от format. Метод format() косвенно выполняет замену. Сначала создает словарь отображения, а затем выполняет замену. В случае format map() замена выполняется напрямую с использованием словаря сопоставления. Так как format map() не создает новый словарь, это немного быстрее, чем format().
Метод format map() заменяет все ключи в строке значением. Это вернет новую строку со всеми сделанными заменами, если это возможно. У данного метода есть некоторые отличия от format. Метод format() косвенно выполняет замену. Сначала создает словарь отображения, а затем выполняет замену. В случае format map() замена выполняется напрямую с использованием словаря сопоставления. Так как format map() не создает новый словарь, это немного быстрее, чем format().
Forwarded from Python Education
symmetric difference update
Метод symmetric difference() возвращает новый набор, содержащий симметричную разность двух наборов. Метод symmetric difference update() обновляет набор с симметричной разницей наборов. Этот метод возвращает None, что указывает на отсутствие возвращаемого значения. Он только обновляет набор.
Метод symmetric difference() возвращает новый набор, содержащий симметричную разность двух наборов. Метод symmetric difference update() обновляет набор с симметричной разницей наборов. Этот метод возвращает None, что указывает на отсутствие возвращаемого значения. Он только обновляет набор.
Forwarded from Python Education
«Сырые» строки и строковые литералы
Оперировать строками в Python – одно удовольствие, так как язык предоставляет для них множество удобных методов. Также имеется поддержка «сырых» строк и строковых литералов.
Чтобы строка стала «сырой», перед ней необходимо поставить символ r в любом регистре
Оперировать строками в Python – одно удовольствие, так как язык предоставляет для них множество удобных методов. Также имеется поддержка «сырых» строк и строковых литералов.
Чтобы строка стала «сырой», перед ней необходимо поставить символ r в любом регистре
Forwarded from Python Education
Преобразование даты
Метод datetime.strptime() используется для преобразования строки в объекты даты и времени, чтобы выполнять над ними нестроковые операции. Данный метод поддерживает множество кодов форматирования, таких как %Y для четырехзначного года и %m для двухзначного месяца. Эти плейсхолдеры также работают в обратном порядке, если тебе нужно представить объект даты и времени в строковом выводе и сделать его красивым.
Метод datetime.strptime() используется для преобразования строки в объекты даты и времени, чтобы выполнять над ними нестроковые операции. Данный метод поддерживает множество кодов форматирования, таких как %Y для четырехзначного года и %m для двухзначного месяца. Эти плейсхолдеры также работают в обратном порядке, если тебе нужно представить объект даты и времени в строковом выводе и сделать его красивым.
Forwarded from Python Education
union
Объединение двух или более множеств — это множество всех различных элементов, присутствующих во всех множествах. Метод union() возвращает набор, содержащий все элементы из исходного набора и все элементы из указанных наборов. Если элемент присутствует более чем в одном наборе, результат будет содержать только один экземпляр этого элемента. Если аргумент не передается в union(), он возвращает поверхностную копию набора.
Объединение двух или более множеств — это множество всех различных элементов, присутствующих во всех множествах. Метод union() возвращает набор, содержащий все элементы из исходного набора и все элементы из указанных наборов. Если элемент присутствует более чем в одном наборе, результат будет содержать только один экземпляр этого элемента. Если аргумент не передается в union(), он возвращает поверхностную копию набора.