Подтвердить что ты не робот

Две косые черты в Python

Я наткнулся на этот образец кода из сортировки radix:

def getDigit(num, base, digit_num):
    # pulls the selected digit
    return (num // base ** digit_num) % base

Что делает '//' в Python?

4b9b3361

Ответ 1

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

В Python 3 обычный оператор деления / возвращает значения с плавающей запятой, даже если оба операнда являются целыми числами, поэтому для разделения полов необходим другой оператор. Это отличается от Python 2, где / выполнял разделение полов, если оба операнда были целыми числами и делением с плавающей запятой, если хотя бы один из операндов был значением с плавающей запятой.

Оператор // был впервые введен для обеспечения совместимости в прямом режиме в Python 2.2, когда было решено, что Python 3 должен обладать этой новой способностью. Вместе с возможностью включить поведение Python 3 через from __future__ import division (также представленный в Python 2.2), это позволяет вам писать Python 3-совместимый код в Python 2.

Ответ 2

Вы можете просто попробовать:

In []: 5/2
Out[]: 2

In []: 5.0/2
Out[]: 2.5

In []: 5.0//2
Out[]: 2.0

Это должно быть само собой разумеющимся.

(Это в Python 2.7.)