python的生成器对象遍历之后原生成器对象将不复存在吗

例1:
a=(x for x in range(1,10))#生成一个对象生成器,只能被使用一次使用完后会返回一个空值
print(a)
for i in a:
    print(i,end='')
print(tuple(a))#对象生成器使用完后就返回一个空值
print(a)

结果是:<generator object <genexpr> at 0x0000028A5BFC0040>
123456789()
<generator object <genexpr> at 0x0000028A5BFC0040>

第一个print打印出对象生成器的值与第三个print是一样的,为什么结果的第二行后面是返回一个空值?

 

 

例2:

my_list=[11,12,13]
my_tuple=(21,22,23)
a1=zip(my_list,my_tuple)
print(a1)
for i in a1:
    print(i,end='')
print(tuple(a1))
print(a1)#zip方法返回的还是一个对象生成器

结果是:<zip object at 0x000001F90CE78B80>
(11, 21)(12, 22)(13, 23)()
<zip object at 0x000001F90CE78B80>

 

与例1是一样的问题这里再写一个例子而已! 

 

>第一个print打印出对象生成器的值与第三个print是一样的,为什么结果的第二行后面是返回一个空值?

生成器对象是一个变量,也是一个object,这个object本身的地址没变,但是这个object内部的状态已经发生变化。