[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