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
Buongiorno a tutti, ho notato questa cosa:
#!/usr/bin/env python3
def test():
for x in range(0, 10):
yield x
iterator = test()
print(test)
for x in iterator:
print(x)
for x in iterator:
print(x)
-
Restituisce
0
1
2
3
4
5
6
7
8
9
---
Mentre se modi