今天的我更强了 发表于 2020-6-24 17:58:10

python的垃圾回收机制

代码如下:
stra='qwertyui'
b=reversed(stra)
然后输入list(b)得出结果后,在c=list(b) c成为空列表
这是因为在输入list(b)后 没有将其赋值,python以为这是垃圾,将其给清理掉了吗?

liuzhengyuan 发表于 2020-6-24 18:00:06

应该是的,我这里测试的就没有问题

今天的我更强了 发表于 2020-6-24 18:01:47

liuzhengyuan 发表于 2020-6-24 18:00
应该是的,我这里测试的就没有问题

请问您也是这样吗?

Twilight6 发表于 2020-6-24 18:02:25

这个不是垃圾回收机制的原因

Twilight6 发表于 2020-6-24 18:03:30

本帖最后由 Twilight6 于 2020-6-24 18:09 编辑



reversed 函数返回的是一个反向迭代器,迭代器就是可以通过 next 来生成下一个元素的,如果你直接 list 就会一次性把 迭代器里面的值全部读取完

就会导致你后续再次读取全部都是空的了,就像读取文件一样,你read 读取文件 第二次再次读取就会为 空字符串,因为之前已经被你读完了

你可以试试这样运行代码
stra='qwertyui'
b=reversed(stra)
print(next(b))
print(next(b))
print(next(b))
print('__读取剩下的字符')
print(list(b))



页: [1]
查看完整版本: python的垃圾回收机制