Funções geradoras em Python
Para quem sabe alguma coisa de Python, os geradores não são propriamente uma novidade, mas mesmo assim não deixam de ser uma das funcionalidades mais interessantes desta linguagem.
Para todos os efeitos são apenas iteradores, mas permitem separar conceptualmente o percorrer dos valores gerados da forma como vão ser utilizados, o que permite até encará-los como ciclos infinitos, como se pode ver pelo código acima.
Python is fun!
def powers():
n = 1
while (1):
yield 2**n # um "return" que não termina a função
n += 1
if __name__ == "__main__":
i = powers()
for n in range(16):
print i.next() # 2 4 8 16 32 64 128 ...
Para todos os efeitos são apenas iteradores, mas permitem separar conceptualmente o percorrer dos valores gerados da forma como vão ser utilizados, o que permite até encará-los como ciclos infinitos, como se pode ver pelo código acima.
Python is fun!
São as maravilhas da lazy evaluation ;) em Haskell passa-se o mesmo:
powers = [ 2 ^ n | n <- [1..] ]
(ou seja: eu que ainda não sei Python, começo a ver que realmente não foi assim uma perda de tempo tão grande ter de estudar Haskell :P)
Por
João Craveiro, em 07 Fevereiro, 2006 00:43
Pois, mas em Python estas coisas são implementadas num estilo mais imperativo, o que é bom para mim, que não gosto de linguagens funcionais (alguns trabalhos em Caml para a faculdade, a repetir apenas se for obrigado).
Por
Carlos Rodrigues, em 07 Fevereiro, 2006 01:08
you can be sure... Python is really fun! :)
para qum gosta de trabalhar em Python e precisa de um IDE fixe sugiro o PyDev, que roda sobre o Eclipse, http://pydev.sourceforge.net/ , e que acabou de conhecer a versão 1.0 há poucos dias.
Por
pescadorDigital, em 08 Fevereiro, 2006 09:58