Melhor resposta
Quando uma operação aritmética excede os limites do tipo de variável, um OverflowError é gerado. Inteiros longos alocam mais espaço conforme os valores aumentam, então eles acabam aumentando MemoryError. No entanto, o tratamento de exceções de ponto flutuante não é padronizado. Inteiros regulares são convertidos em valores longos conforme necessário.
Exemplo
O código fornecido é reescrito para capturar a exceção da seguinte maneira
 i=1 
 try: 
 f = 3.0**i 
 for i in range(100): 
 print i, f 
 f = f ** 2 
 except OverflowError as err: 
 print "Overflowed after ", f, err 
Resposta
Assim como a maioria das outras linguagens de programação, o OverflowError em Python indica que uma operação aritmética excedeu os limites do tempo de execução atual do Python. Normalmente, isso ocorre devido a valores flutuantes excessivamente grandes, já que valores inteiros que são muito grandes optarão por aumentar MemoryErrors.