Search code examples
pythoniteratorglob

Python Iterators: What does iglob()'s Iterator provide over glob()'s list?


Given the piece of code:

from glob import glob, iglob

for fn in glob('/*'):
    print fn

print ''

for fn in iglob('/*'):
    print fn

Reading the documentation for glob, I see that glob() returns a basic list of files and iglob an Iterator. However, I'm able to iterate over both and the same list of files is returned by each of them.

I've read the documentation on Iterator, but it hasn't shed anymore light on the subject really!

So what benefit does iglob() returning an Iterator provide me over the list from glob()? Do I gain extra functionality over my old friend the lowly list?


Solution

  • The difference is mentioned in the documentation itself:

    Return an iterator which yields the same values as glob() without actually storing them all simultaneously.

    Basically list will have all the items in memory. Iterator need not, and hence it requires less memory.