En Python (2 y 3). Cada vez que usamos el corte de lista, devuelve un nuevo objeto, por ejemplo:
l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
Salida
>>> 140344378384464
>>> 140344378387272
Si se repite lo mismo con tupla, se devuelve el mismo objeto, por ejemplo:
t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
Salida
>>> 140344379214896
>>> 140344379214896
Sería genial si alguien puede arrojar algo de luz sobre por qué está sucediendo esto, a lo largo de mi experiencia en Python tuve la impresión de que el segmento vacío devuelve un nuevo objeto.
Tengo entendido que está devolviendo el mismo objeto ya que las tuplas son inmutables y no tiene sentido crear una nueva copia. Pero, de nuevo, no se menciona en los documentos en ninguna parte.
l2 = tuple(iter(l1))
omite la optimización
PyTuple_GetSlice
se documentó de manera incorrecta después de ver su pregunta. Los documentos ahora se han solucionado (este era el problema bpo38557 ).