Dos barras diagonales en Python

Me encontré con esta muestra de código de una clase de radix :

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

¿Qué hace el ‘ // ‘ en Python?

// es el operador de división de suelo. Produce el piso del cociente de sus operandos, sin redondeo de punto flotante para operandos enteros. En ocasiones, esto también se conoce como división de enteros, aunque se puede usar con flotantes, porque dividir enteros con / usa para hacer esto de manera predeterminada.

En Python 3, el operador ordinario / división devuelve valores de punto flotante incluso si ambos operandos son enteros, por lo que se necesita un operador diferente para la división de piso. Esto es diferente de Python 2 donde / realizó la división de piso si ambos operandos eran enteros y la división de punto flotante si al menos uno de los operandos era un valor de punto flotante.

El operador // se introdujo por primera vez por compatibilidad hacia adelante en Python 2.2 cuando se decidió que Python 3 debería tener esta nueva capacidad. Junto con la capacidad de habilitar el comportamiento de Python 3 a través from __future__ import division (también introducida en Python 2.2), esto le permite escribir código compatible con Python 3 en Python 2.

Puedes probarlo:

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

Esto debería explicarse por sí mismo.

(Esto está en Python 2.7.)