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))
输出
200
200
208
208
208
208
为什么下面的 4 个生成器多使用 8 个字节?
生成器对象的“大小”不是它将生成的元素(如列表或某种其他类型的序列)的函数,而是它执行的代码的函数,好吧,生成元素。