您的位置:首页 > 编程语言 > Python开发

Python3列表推导不会再有变量泄露的问题

2017-11-23 15:19 281 查看
Python2.X
中,在列表推导中
for
关键词之后的赋值操作可能会影响列表推导上下文中的同名变量。像下面这个
Python2.7
控制台对话:

>>> x = "my precious"
>>> dummy = [x for x in "ABC"]
>>> x
'C'


如你所见,
x
原本的值被取代了,但是这种情况在
Python3.X
中是不会出现的。

列表推导、生成器表达式,以及同他们很相似的集合(set)推导和字典(dict)推导,在
Python3
中都有了自己的局部作用域,就像函数似的。表达式内部的变量和赋值只在局部起作用,表达式的上下文的同名变量还可以被正常引用,局部变量并不会影响他们。

这是
Python3
的代码:

>>> x = "ABC"
>>> dummy = [ord(x) for x in x]
>>> x
"ABC"
>>> dummy
[65,66,67]


可以看到,x的值被保留了,列表推导也创建了正确的列表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  流畅的Python