Автор оригинала: Pankaj Kumar.
Python//Оператор – Дивизион на основе пола
//
Оператор в Python 3 используется для выполнения дивизии на основе пола.
Это означает, что A//B
Сначала разделяет A by b и получает целочисленное значение, сбрасывая оставшуюся часть. Это означает, что результат A//B
всегда целое число.
Python//Примеры оператора
Вот несколько примеров, чтобы проиллюстрировать то же самое:
>>> 2 // 3 0 >>> 1.3 // 2 0.0 >>> 1.3 // 1.0 1.0 >>> 3.4 // 1.1 3.0 >>> 3.4 // 1.2 2.0 >>> -1//2 -1 >>> -6 // 2 -3 >>> -6 // -3 2
Это показывает, как //
Оператор выполняет отдел на основе пола, с учетом целой части дивизии, даже для количества плавающих точек.
Выполнение этой операции на неподдерживаемых типах (например, списки и строки), приведет к Типеррор
, как одинаково для любого другого арифметического оператора.
Перегрузка оператора//
//
относится к __flooordiv __ ()
Оператор по умолчанию, так что вы можете выполнить Перегрузка оператора Переопределяя этот метод ( Оператор .__ Флордов __ (A, B)
)
Вот пример, который перегружает //
Способ для целочисленных списков, имеющих ту же длину, выполняя индивидуальное разделение на основе пола на каждой паре элементов.
Итак, два целочисленных списка [3, 4, 5]
и [2, 2, 1]
даст [3//2, 4//2, 5//1]
, который просто список [1, 2, 5]
Отказ
import operator class MyClass(): def __init__(self, a): self.a = a def __floordiv__(self, b): if isinstance(self.a, list) and isinstance(b.a, list) and len(self.a) == len(b.a): result = [] # Overload // operator for Integer lists for i, j in zip(self.a, b.a): result.append(i // j) return result else: # Perform Default // operation otherwise return operator.__floordiv__(self.a, b.a) m = MyClass([3, 4, 5]) n = MyClass([2, 2, 1]) print(m // n)
Выход
[1, 2, 5]
Заключение
В этой статье мы узнали о //
Оператор дивизии пола. Мы также узнали о выполнении оператора перегрузки на это, реализуя Оператор .__ Флордов __ (A, B)
Отказ