Унарные операторы (ч.1)
В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.
Этот лайфхак полезен для создания объектов, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg позволяет определить поведение объекта при использовании оператора отрицания, что может быть полезно при работе с числами или другими данными, где операция отрицания имеет смысл.
🔗 Python tricks
В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.
Этот лайфхак полезен для создания объектов, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg позволяет определить поведение объекта при использовании оператора отрицания, что может быть полезно при работе с числами или другими данными, где операция отрицания имеет смысл.
🔗 Python tricks
Унарные операторы (ч.2)
Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.
В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.
🔗 Python tricks
Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.
В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.
🔗 Python tricks
Унарные операторы (ч.3)
Метод abs(self) вызывается при использовании встроенной функции abs() для объекта. Он позволяет определить поведение объекта при вычислении его абсолютного значения.
В примере выше метод abs просто вызывает встроенную функцию abs() для атрибута self.value, что позволяет получить абсолютное значение числа.
Этот лайфхак полезен при создании объектов, которые представляют числовые значения, таких как вектора, комплексные числа или другие структуры данных, где определение абсолютного значения имеет смысл. Переопределение метода abs позволяет объекту поддерживать стандартные математические операции в Python, такие как вычисление модуля числа.
🔗 Python tricks
Метод abs(self) вызывается при использовании встроенной функции abs() для объекта. Он позволяет определить поведение объекта при вычислении его абсолютного значения.
В примере выше метод abs просто вызывает встроенную функцию abs() для атрибута self.value, что позволяет получить абсолютное значение числа.
Этот лайфхак полезен при создании объектов, которые представляют числовые значения, таких как вектора, комплексные числа или другие структуры данных, где определение абсолютного значения имеет смысл. Переопределение метода abs позволяет объекту поддерживать стандартные математические операции в Python, такие как вычисление модуля числа.
🔗 Python tricks
Унарные операторы (ч.4)
Метод invert(self) в Python вызывается при использовании побитового отрицания ~ для объекта. Он позволяет определить поведение объекта при побитовом инвертировании его значений.
В приведенном примере метод invert просто использует побитовое отрицание ~ для атрибута self.value, что позволяет инвертировать биты числа.
Этот лайфхак полезен при работе с побитовыми операциями, такими как побитовое отрицание, побитовое ИЛИ, И и т. д. Переопределение метода invert позволяет объекту поддерживать более сложные операции с битами, что может быть полезно при работе с битовыми представлениями данных или при написании кода, связанного с низкоуровневыми аспектами.
🔗 Python tricks
Метод invert(self) в Python вызывается при использовании побитового отрицания ~ для объекта. Он позволяет определить поведение объекта при побитовом инвертировании его значений.
В приведенном примере метод invert просто использует побитовое отрицание ~ для атрибута self.value, что позволяет инвертировать биты числа.
Этот лайфхак полезен при работе с побитовыми операциями, такими как побитовое отрицание, побитовое ИЛИ, И и т. д. Переопределение метода invert позволяет объекту поддерживать более сложные операции с битами, что может быть полезно при работе с битовыми представлениями данных или при написании кода, связанного с низкоуровневыми аспектами.
🔗 Python tricks
Обычные арифметические операторы (ч.1)
Метод add(self, other) позволяет определить поведение объекта при использовании оператора сложения +. В данном примере, если операнд other также является объектом типа Vector, мы складываем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий сумму. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, матрицы и другие структуры данных, где определение операции сложения имеет смысл. Переопределение метода add позволяет объекту поддерживать стандартную математическую операцию сложения в Python.
🔗 Python tricks
Метод add(self, other) позволяет определить поведение объекта при использовании оператора сложения +. В данном примере, если операнд other также является объектом типа Vector, мы складываем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий сумму. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, матрицы и другие структуры данных, где определение операции сложения имеет смысл. Переопределение метода add позволяет объекту поддерживать стандартную математическую операцию сложения в Python.
🔗 Python tricks
Statistics
Библиотека statistics предназначена для вычисления различных статистических характеристик наборов данных.
Одной из полезных функций этой библиотеки является mean(), которая вычисляет среднее арифметическое значение последовательности чисел.
В примере мы вычисляем среднее значение элементов списка data.
Функция mean() принимает последовательность чисел, суммирует их и делит на количество элементов.
🔗 Python tricks
Библиотека statistics предназначена для вычисления различных статистических характеристик наборов данных.
Одной из полезных функций этой библиотеки является mean(), которая вычисляет среднее арифметическое значение последовательности чисел.
В примере мы вычисляем среднее значение элементов списка data.
Функция mean() принимает последовательность чисел, суммирует их и делит на количество элементов.
🔗 Python tricks
zlib
Библиотека zlib предоставляет функции для сжатия и декомпрессии данных с использованием алгоритма deflate. Она полезна, когда нужно уменьшить размер данных для передачи или хранения.
В примере мы используем функцию crc32(), которая вычисляет контрольную сумму CRC32 для переданных байтовых данных и возвращает целочисленное значение CRC32.
Это может быть полезно для проверки целостности данных, например при передаче файлов.
CRC32 часто используется в архивациях, сетевых протоколах и хранилищах данных для обнаружения ошибок.
🔗 Python tricks
Библиотека zlib предоставляет функции для сжатия и декомпрессии данных с использованием алгоритма deflate. Она полезна, когда нужно уменьшить размер данных для передачи или хранения.
В примере мы используем функцию crc32(), которая вычисляет контрольную сумму CRC32 для переданных байтовых данных и возвращает целочисленное значение CRC32.
Это может быть полезно для проверки целостности данных, например при передаче файлов.
CRC32 часто используется в архивациях, сетевых протоколах и хранилищах данных для обнаружения ошибок.
🔗 Python tricks
Заменяем часть строки через str.replace()
Функция str.replace() позволяет заменить все вхождения подстроки в строке на другую подстроку, не указывая явно позиции для замены.
В примере мы создали строку text с двумя вхождениями подстроки "Hello".
Далее с помощью метода replace() заменяем "Hello" на "Hi".
Первым аргументом передается строка для замены, вторым - строка, на которую нужно заменить.
🔗 Python tricks
Функция str.replace() позволяет заменить все вхождения подстроки в строке на другую подстроку, не указывая явно позиции для замены.
В примере мы создали строку text с двумя вхождениями подстроки "Hello".
Далее с помощью метода replace() заменяем "Hello" на "Hi".
Первым аргументом передается строка для замены, вторым - строка, на которую нужно заменить.
🔗 Python tricks
Python-dateutil
Библиотека python-dateutil предоставляет расширенные возможности для работы с датами и временем.
Она может использоваться для:
- Парсинга и форматирования дат;
- Выполнения арифметических операций с датами;
- Работы с часовыми поясами;
- Вычисления разницы между датами.
В примере мы используем библиотеку для получения начала и конца недели по заданной дате.
relativedelta используется для смещения даты на нужные дни недели.
MO(-1) - для получения предыдущего понедельника.
SU - для получения следующего воскресенья.
🔗 Python tricks
Библиотека python-dateutil предоставляет расширенные возможности для работы с датами и временем.
Она может использоваться для:
- Парсинга и форматирования дат;
- Выполнения арифметических операций с датами;
- Работы с часовыми поясами;
- Вычисления разницы между датами.
В примере мы используем библиотеку для получения начала и конца недели по заданной дате.
relativedelta используется для смещения даты на нужные дни недели.
MO(-1) - для получения предыдущего понедельника.
SU - для получения следующего воскресенья.
🔗 Python tricks
Геттеры и сеттеры
Геттеры и сеттеры - это специальные методы класса, которые используются для управляемого доступа к атрибутам объекта. Они позволяют инкапсулировать реализацию класса и предоставить проверенный интерфейс для манипуляции данными.
- Геттер позволяет получить значение атрибута.
- Сеттер используется для установки значения атрибута.
Преимущества геттеров и сеттеров:
- Контроль доступа к атрибутам класса.
- Валидация данных.
- Возможность добавить дополнительную логику при установке/получении значений.
🔗 Python tricks
Геттеры и сеттеры - это специальные методы класса, которые используются для управляемого доступа к атрибутам объекта. Они позволяют инкапсулировать реализацию класса и предоставить проверенный интерфейс для манипуляции данными.
- Геттер позволяет получить значение атрибута.
- Сеттер используется для установки значения атрибута.
Преимущества геттеров и сеттеров:
- Контроль доступа к атрибутам класса.
- Валидация данных.
- Возможность добавить дополнительную логику при установке/получении значений.
🔗 Python tricks
optional_return
Функция optional_return в модуле typing используется для определения функций, которые могут возвращать значение или None.
Это позволяет лучше документировать поведение функции и дает подсказки при использовании ее результата, не опасаясь ошибки, если будет возвращен None.
В данном примере функция find_user может вернуть имя пользователя, если оно найдено в списке, или None, если такого имени нет. Благодаря аннотации Optional[str] мы явно указываем, что возвращаемое значение может быть строкой или None.
🔗 Python tricks
Функция optional_return в модуле typing используется для определения функций, которые могут возвращать значение или None.
Это позволяет лучше документировать поведение функции и дает подсказки при использовании ее результата, не опасаясь ошибки, если будет возвращен None.
В данном примере функция find_user может вернуть имя пользователя, если оно найдено в списке, или None, если такого имени нет. Благодаря аннотации Optional[str] мы явно указываем, что возвращаемое значение может быть строкой или None.
🔗 Python tricks
Метод setdefault()
Метод setdefault() для словарей - очень полезная вещь, он позволяет задать значение по ключу в словаре, если этого ключа еще нет, а также вернуть значение по этому ключу.
🔗 Python tricks
Метод setdefault() для словарей - очень полезная вещь, он позволяет задать значение по ключу в словаре, если этого ключа еще нет, а также вернуть значение по этому ключу.
🔗 Python tricks
seekable()
Метод seekable() в Python проверяет, поддерживает ли объект произвольный доступ, то есть чтение или запись в любую позицию файла. Если объект не поддерживает произвольный доступ, то методы seek() и tell() будут недоступны.
🔗 Python tricks
Метод seekable() в Python проверяет, поддерживает ли объект произвольный доступ, то есть чтение или запись в любую позицию файла. Если объект не поддерживает произвольный доступ, то методы seek() и tell() будут недоступны.
🔗 Python tricks
Счетчик ссылок
Каждый созданный объект имеет специальное поле — счетчик ссылок. Он хранит в себе количество ссылающихся на него объектов. Увеличивает свое значение, например, когда используется операция присваивания, или когда объект становится частью списка. При удалении переменной или же при использовании del счетчик ссылок уменьшается на 1. Например, при завершении работы функции, где эта переменная была объявлена.
🔗 Python tricks
Каждый созданный объект имеет специальное поле — счетчик ссылок. Он хранит в себе количество ссылающихся на него объектов. Увеличивает свое значение, например, когда используется операция присваивания, или когда объект становится частью списка. При удалении переменной или же при использовании del счетчик ссылок уменьшается на 1. Например, при завершении работы функции, где эта переменная была объявлена.
🔗 Python tricks
Обычные арифметические операторы (ч.2)
Метод sub(self, other) позволяет определить поведение объекта при использовании оператора вычитания -. В данном примере, если операнд other также является объектом типа Vector, мы вычитаем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий разность. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, матрицы и другие структуры данных, где определение операции вычитания имеет смысл. Переопределение метода sub позволяет объекту поддерживать стандартную математическую операцию вычитания в Python.
🔗 Python tricks
Метод sub(self, other) позволяет определить поведение объекта при использовании оператора вычитания -. В данном примере, если операнд other также является объектом типа Vector, мы вычитаем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий разность. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, матрицы и другие структуры данных, где определение операции вычитания имеет смысл. Переопределение метода sub позволяет объекту поддерживать стандартную математическую операцию вычитания в Python.
🔗 Python tricks
Обычные арифметические операторы (ч.3)
Метод mul(self, other) позволяет определить поведение объекта при использовании оператора умножения *. В данном примере, если операнд other является числом (целым или вещественным), мы умножаем соответствующие координаты вектора на это число и возвращаем новый объект Vector, представляющий результат умножения. Если other не является числом, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Метод rmul(self, other) позволяет поддерживать коммутативность умножения, т.е. возможность умножения числа на вектор (например, 3 * v). Этот метод просто вызывает mul, чтобы обеспечить одинаковое поведение для обеих форм умножения.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, где определение операции умножения имеет смысл. Переопределение методов mul и rmul позволяет объекту поддерживать стандартную математическую операцию умножения в Python.
🔗 Python tricks
Метод mul(self, other) позволяет определить поведение объекта при использовании оператора умножения *. В данном примере, если операнд other является числом (целым или вещественным), мы умножаем соответствующие координаты вектора на это число и возвращаем новый объект Vector, представляющий результат умножения. Если other не является числом, мы вызываем исключение TypeError, указывая, что операция не поддерживается.
Метод rmul(self, other) позволяет поддерживать коммутативность умножения, т.е. возможность умножения числа на вектор (например, 3 * v). Этот метод просто вызывает mul, чтобы обеспечить одинаковое поведение для обеих форм умножения.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, где определение операции умножения имеет смысл. Переопределение методов mul и rmul позволяет объекту поддерживать стандартную математическую операцию умножения в Python.
🔗 Python tricks
Обычные арифметические операторы (ч.4)
Класс Matrix реализует метод matmul(self, other), который определяет поведение оператора матричного умножения @.
В методе matmul, проверяется, что число столбцов первой матрицы равно числу строк второй матрицы, так как это условие необходимо для умножения матриц.
Затем создается результатирующая матрица и заполняется нулями.
Умножение матриц выполняется с помощью вложенных циклов.
Результат умножения возвращается в виде новой матрицы.
Этот лайфхак полезен для работы с линейной алгеброй и матричными операциями, где оператор @ позволяет интуитивно и легко выполнять умножение матриц, переопределяя метод matmul для пользовательских классов в Python.
🔗 Python tricks
Класс Matrix реализует метод matmul(self, other), который определяет поведение оператора матричного умножения @.
В методе matmul, проверяется, что число столбцов первой матрицы равно числу строк второй матрицы, так как это условие необходимо для умножения матриц.
Затем создается результатирующая матрица и заполняется нулями.
Умножение матриц выполняется с помощью вложенных циклов.
Результат умножения возвращается в виде новой матрицы.
Этот лайфхак полезен для работы с линейной алгеброй и матричными операциями, где оператор @ позволяет интуитивно и легко выполнять умножение матриц, переопределяя метод matmul для пользовательских классов в Python.
🔗 Python tricks
flush
В Python метод flush() используется для сброса буфера записи на диск. Когда ты пишешь данные в файл, они сначала попадают в буфер (временное хранилище) для повышения производительности. Метод flush() заставляет Python записать все данные из буфера в файл немедленно.
🔗 Python tricks
В Python метод flush() используется для сброса буфера записи на диск. Когда ты пишешь данные в файл, они сначала попадают в буфер (временное хранилище) для повышения производительности. Метод flush() заставляет Python записать все данные из буфера в файл немедленно.
🔗 Python tricks
Обычные арифметические операторы (ч.5)
Класс Rational реализует метод truediv(self, other), который определяет поведение оператора деления /.
В методе truediv, если операнд other также является объектом класса Rational, то выполняется деление дробей, умножая на обратную дробь.
Если операнд other является целым числом или числом с плавающей запятой, то знаменатель дроби умножается на это число.
Если операнд other не является ни Rational, ни числом, вызывается исключение TypeError.
Метод str позволяет выводить дробь в виде строки.
Этот лайфхак полезен при работе с дробями или другими типами данных, где определение операции деления имеет смысл. Переопределение метода truediv позволяет объекту поддерживать стандартную математическую операцию деления в Python.
🔗 Python tricks
Класс Rational реализует метод truediv(self, other), который определяет поведение оператора деления /.
В методе truediv, если операнд other также является объектом класса Rational, то выполняется деление дробей, умножая на обратную дробь.
Если операнд other является целым числом или числом с плавающей запятой, то знаменатель дроби умножается на это число.
Если операнд other не является ни Rational, ни числом, вызывается исключение TypeError.
Метод str позволяет выводить дробь в виде строки.
Этот лайфхак полезен при работе с дробями или другими типами данных, где определение операции деления имеет смысл. Переопределение метода truediv позволяет объекту поддерживать стандартную математическую операцию деления в Python.
🔗 Python tricks
multitasking
Библиотека multitasking предназначена для организации параллельных вычислений с использованием кооперативных потоков.
Она позволяет легко создавать параллельные задачи и управлять ими.
Multitasking полезен, когда в приложении нужно:
- Выполнять несколько задач параллельно
- Организовать очереди задач и пулы потоков
- Избежать блокировки интерфейса при длительных операциях
Как видно из примера, задачи выполнились параллельно, в произвольном порядке.
🔗 Python tricks
Библиотека multitasking предназначена для организации параллельных вычислений с использованием кооперативных потоков.
Она позволяет легко создавать параллельные задачи и управлять ими.
Multitasking полезен, когда в приложении нужно:
- Выполнять несколько задач параллельно
- Организовать очереди задач и пулы потоков
- Избежать блокировки интерфейса при длительных операциях
Как видно из примера, задачи выполнились параллельно, в произвольном порядке.
🔗 Python tricks
Метод join
Метод join() позволяет объединить элементы последовательности (списка, кортежа и т.д.) в строку.
Основные моменты:
- Метод принадлежит строке, вызывается на разделителе.
- В качестве разделителя можно использовать любую строку.
- В результате получится строка, где между элементами последовательности вставлен разделитель.
🔗 Python tricks
Метод join() позволяет объединить элементы последовательности (списка, кортежа и т.д.) в строку.
Основные моменты:
- Метод принадлежит строке, вызывается на разделителе.
- В качестве разделителя можно использовать любую строку.
- В результате получится строка, где между элементами последовательности вставлен разделитель.
🔗 Python tricks