[Python] Chiarimento sugli iteratori
Valerio Pachera
sirio81 a gmail.com
Ven 17 Set 2021 17:06:50 CEST
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 stringhe.
Come argomento potrei passare il listone, ma passo l'iteratore
data = parsefile(path):
def tampastinga1(data):
# prendi il necessario da data
return stinga
def stampastringa2(data):
# prendi il necessario da data
return stringa
Ebbene, la seconda funzione non ritorna nulla.
Il giorno ven 17 set 2021 alle ore 16:57 Valerio Pachera
<sirio81 a gmail.com> ha scritto:
>
> 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
>
> <function test at 0x7f17dd3e81f0>
> 0
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
>
> -----------
>
Maggiori informazioni sulla lista
Python