zhouzhaoxin
zhouzhaoxin 主攻python,喜欢读书,喜欢摄影,芒格的忠实追随者。关注各个领域发展,取长补短,擅长结合多学科技术解决问题

列表推导内存泄漏问题

列表推导内存泄漏问题

在Python2中的列表推导式中for关键字的赋值操作会对声明的变量产生影响
例如下边的Python2控制台交互

1
2
3
4
>>> x = 'init'
>>> y = [x for x in 'ABC']
>>> x
C

列表推导中的变量x将声明的x覆盖了。这个问题在python3中已经被修复了,表达式内部的变量和赋值,只在局部起作用,表达式上下文内的同名变量还是可以正常引用。
这是Python3的代码

1
2
3
4
5
6
>>> x = 'init'
>>> y = [x for x in 'ABC']
>>> x
init
>>>y
['A', 'B', 'C']

x的值被保留了,列表推导也创建了正确的列表