[Python] Chiarimento sugli iteratori

Valerio Pachera sirio81 a gmail.com
Ven 17 Set 2021 16:57:43 CEST


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

-----------

Mentre se modifico lo script con

for x in test():
    print(x)

for x in test():
    print(x)

-------

Ottengo

<function test at 0x7f7e59baf1f0>
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

-------

Nella mia testa pensavo fosse indifferente richiamare "iterator"
anziché "test()".
Se verifico il tipo di dato ottengo

iterator = test()
print(type(test))

<class 'function'>

------

Non mi è chiarissimo il motivo per cui, al secondo ciclo for non viene
restituito alcun dato.
Sapete darmi una dritta?


Maggiori informazioni sulla lista Python