Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What determines the size of a generator?

import sys

num_gen = (num for num in range(1))
print(sys.getsizeof(num_gen))
num_gen = (num for num in range(100))
print(sys.getsizeof(num_gen))

num_gen = (num+1 for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+1+1 for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+num for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+num+1 for num in range(100))
print(sys.getsizeof(num_gen))

OUTPUT

200
200
208
208
208
208

Why does the 4 generators below use 8 more bytes?

like image 913
henveloper Avatar asked Dec 21 '25 14:12

henveloper


1 Answers

A generator object's "size" isn't a function of the elements it will produce (like a list or some other kind of sequence), but of the code it executes to, well, generate the elements.

like image 179
chepner Avatar answered Dec 23 '25 03:12

chepner