Nel primo caso consumi un iteratore già esausto, per cui ovvio che non
torni nulla. Nel secondo invece ne crei un secondo.
test è un generatore (usa yeld) e quindi anche un iteratore.
Qui la differenza tra generatori e iteratori
https://stackoverflow.com/questions/2776829/difference-between-py
Il giorno ven 17 set 2021 alle ore 16:58 Valerio Pachera
ha scritto:
>
> Buongiorno a tutti, ho notato questa cosa:
> [...]
In questo caso l'iteratore viene eseguito una sola volta, qui:
> iterator = test()
Le seguenti due righe sono due chiamate alla stessa esecuzione dell'iteratore:
> for x i
On 17/09/21 17:06, Valerio Pachera wrote:
Il caso simil reale è questo
ho una funzione che legge un file, e potrei ritornare una grande lista.
Al posto di ritornare la lista, faccio lo yield del dato estratto, al
fine di risparmiare RAM.
def parsefile(path):
# tante belle cose
yield x
Il caso simil reale è questo
ho una funzione che legge un file, e potrei ritornare una grande lista.
Al posto di ritornare la lista, faccio lo yield del dato estratto, al
fine di risparmiare RAM.
def parsefile(path):
# tante belle cose
yield x
Ho poi altre due funzioni che generano delle