Python School
92.4K subscribers
1.99K photos
5 videos
556 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Канал не угарного препода (а намного лучше) – @kantor_ai

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

Что делать, если вы стали топ-менеджером
Как умение рисовать может помочь в жизни
Как уволиться и при этом сохранить отношения со всеми

Подпишись и see you on the other side!
Обычные арифметические операторы (ч.1)

Метод add(self, other) позволяет определить поведение объекта при использовании оператора сложения +. В данном примере, если операнд other также является объектом типа Vector, мы складываем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий сумму. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.

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

Каждый созданный объект имеет специальное поле — счетчик ссылок. Он хранит в себе количество ссылающихся на него объектов. Увеличивает свое значение, например, когда используется операция присваивания, или когда объект становится частью списка. При удалении переменной или же при использовании del счетчик ссылок уменьшается на 1. Например, при завершении работы функции, где эта переменная была объявлена.
В мире разработки Python — тот самый общительный парень в тусовке, с которым легче всего найти общий язык. Его относительно просто освоить, при этом это надёжный и востребованный язык программирования, на котором пишут сложные программы для разных отраслей.

На бесплатном курсе «Основы Python: создаём телеграм-бота» вы сможете познакомиться с основами Python. За 5 занятий вы погрузитесь в логику и синтаксис языка, изучите основные инструменты для написания кода, а также с нуля разработаете планировщик задач и создадите полезного Telegram-бота, которым сможет пользоваться кто угодно.

Реклама. ООО "Нетология". Erid 2VSb5xhBkVn
Обычные арифметические операторы (ч.2)

Метод sub(self, other) позволяет определить поведение объекта при использовании оператора вычитания -. В данном примере, если операнд other также является объектом типа Vector, мы вычитаем соответствующие координаты векторов и возвращаем новый объект Vector, представляющий разность. Если other не является вектором, мы вызываем исключение TypeError, указывая, что операция не поддерживается.

Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, матрицы и другие структуры данных, где определение операции вычитания имеет смысл. Переопределение метода sub позволяет объекту поддерживать стандартную математическую операцию вычитания в Python.
Обычные арифметические операторы (ч.3)

Метод mul(self, other) позволяет определить поведение объекта при использовании оператора умножения *. В данном примере, если операнд other является числом (целым или вещественным), мы умножаем соответствующие координаты вектора на это число и возвращаем новый объект Vector, представляющий результат умножения. Если other не является числом, мы вызываем исключение TypeError, указывая, что операция не поддерживается.

Метод rmul(self, other) позволяет поддерживать коммутативность умножения, т.е. возможность умножения числа на вектор (например, 3 * v). Этот метод просто вызывает mul, чтобы обеспечить одинаковое поведение для обеих форм умножения.

Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, где определение операции умножения имеет смысл. Переопределение методов mul и rmul позволяет объекту поддерживать стандартную математическую операцию умножения в Python.
Обычные арифметические операторы (ч.4)

Класс Matrix реализует метод matmul(self, other), который определяет поведение оператора матричного умножения @.
В методе matmul, проверяется, что число столбцов первой матрицы равно числу строк второй матрицы, так как это условие необходимо для умножения матриц.
Затем создается результатирующая матрица и заполняется нулями.
Умножение матриц выполняется с помощью вложенных циклов.
Результат умножения возвращается в виде новой матрицы.
Этот лайфхак полезен для работы с линейной алгеброй и матричными операциями, где оператор @ позволяет интуитивно и легко выполнять умножение матриц, переопределяя метод matmul для пользовательских классов в Python.
Обычные арифметические операторы (ч.5)

Класс Rational реализует метод truediv(self, other), который определяет поведение оператора деления /.
В методе truediv, если операнд other также является объектом класса Rational, то выполняется деление дробей, умножая на обратную дробь.
Если операнд other является целым числом или числом с плавающей запятой, то знаменатель дроби умножается на это число.
Если операнд other не является ни Rational, ни числом, вызывается исключение TypeError.
Метод str позволяет выводить дробь в виде строки.
Этот лайфхак полезен при работе с дробями или другими типами данных, где определение операции деления имеет смысл. Переопределение метода truediv позволяет объекту поддерживать стандартную математическую операцию деления в Python.
Обычные арифметические операторы (ч.6)

Этот лайфхак полезен при работе с комплексными числами или другими типами данных, где определение операции целочисленного деления имеет смысл. Переопределение метода floordiv позволяет объекту поддерживать стандартную математическую операцию целочисленного деления в Python.
Обычные арифметические операторы (ч.7)

Этот лайфхак полезен при работе с комплексными числами или другими типами данных, где определение операции остатка от деления имеет смысл. Переопределение метода mod позволяет объекту поддерживать стандартную математическую операцию остатка от деления в Python.
Обычные арифметические операторы (ч.8)

Этот лайфхак полезен при работе с дробями или другими типами данных, где определение операций целочисленного деления и остатка имеет смысл. Переопределение метода divmod позволяет объекту поддерживать стандартную функцию divmod() в Python, возвращая частное и остаток от деления в виде кортежа.
Обычные арифметические операторы (ч.9)

Этот лайфхак полезен при работе с комплексными числами или другими типами данных, где определение операций возведения в степень и взятия по модулю имеет смысл. Переопределение метода pow позволяет объекту поддерживать стандартные операции возведения в степень и взятия по модулю в Python.
Обычные арифметические операторы (ч.10)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция сдвига влево имеет смысл. Переопределение метода lshift позволяет объекту поддерживать стандартную операцию сдвига влево в Python.
Обычные арифметические операторы (ч.11)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция сдвига вправо имеет смысл. Переопределение метода rshift позволяет объекту поддерживать стандартную операцию сдвига вправо в Python.
Обычные арифметические операторы (ч.12)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового И имеет смысл. Переопределение метода and позволяет объекту поддерживать стандартную операцию побитового И в Python.
Обычные арифметические операторы (ч.12)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового исключающего ИЛИ имеет смысл. Переопределение метода xor позволяет объекту поддерживать стандартную операцию побитового исключающего ИЛИ в Python.
Обычные арифметические операторы (ч.13)

Этот лайфхак полезен при работе с бинарными числами или другими типами данных, где операция побитового ИЛИ имеет смысл. Переопределение метода or позволяет объекту поддерживать стандартную операцию побитового ИЛИ в Python.
Использование defaultdict для работы со словарями

При работе со словарями часто возникает необходимость инициализировать значения по умолчанию, чтобы избежать ошибок при попытке доступа к несуществующим ключам. В таких случаях полезно использовать defaultdict из модуля collections.

Использование defaultdict упрощает код и избавляет от необходимости вручную проверять существование ключей в словаре, делая его более читаемым и эффективным.
Расширение возможности сложения для пользовательских объектов

radd — это метод Python, который позволяет реализовать операцию сложения с обратным порядком операндов. Он вызывается, когда объект справа от оператора сложения не поддерживает соответствующий метод add.

Представьте, что у вас есть класс, который представляет пользовательские числа. Вы хотите, чтобы эти числа могли складываться с обычными числами Python (int, float) и другими экземплярами своего класса.

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

Метод rsub в Python используется для реализации обратного вычитания, когда операнд слева не поддерживает соответствующий метод sub. Это позволяет определить, как ваш объект должен вычитаться из другого объекта.

Рассмотрим пример, в котором у нас есть класс, представляющий пользовательские числа, и мы хотим поддерживать вычитание этих чисел как с обычными числами Python (int, float), так и с другими экземплярами нашего класса.

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