Por que "1000000000000000 no intervalo (1000000000000001)" é tão rápido no Python 3?

Entendo que orange() função, que é realmenteum tipo de objeto em Python 3, gera seu conteúdo rapidamente, semelhante a um gerador.

Sendo esse o caso, eu esperaria que a linha a seguir levasse um tempo excessivo, porque, para determinar se 1 quadrilhão está no intervalo, seria necessário gerar um quadrilhão de valores:

1000000000000000 in range(1000000000000001)

Além disso: parece que não importa quantos zeros adiciono, o cálculo leva mais ou menos a mesma quantidade de tempo (basicamente instantâneo).

Eu também tentei coisas assim, mas o cálculo ainda é quase instantâneo:

1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens

Se eu tentar implementar minha própria função de faixa, o resultado não é tão bom!

def my_crappy_range(N):
    i = 0
    while i < N:
        yield i
        i += 1
    return

O que érange()&nbsp;objeto fazendo sob o capô que o torna tão rápido?

Resposta de Martijn Pieters&nbsp;foi escolhido por sua completude, mas também vejaprimeira resposta de abarnert&nbsp;para uma boa discussão do que isso significa pararange&nbsp;ser um completoseqüência&nbsp;no Python 3, e algumas informações / avisos sobre inconsistência potencial para__contains__&nbsp;otimização de funções nas implementações do Python.outra resposta de abarnert&nbsp;entra em mais detalhes e fornece links para os interessados na história por trás da otimização no Python 3 (e falta de otimização dexrange&nbsp;em Python 2). Respostaspor cutucar&nbsp;epor wim&nbsp;forneça o código fonte C relevante e explicações para quem estiver interessado.