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中将函数赋值给变量时需要注意的一些问题
- 关于Python函数定义全局变量执行弹出SyntaxWarning的问题
- HeadFirstPython 学习笔记(0)--list comprehension(列表推导)
- python技巧-通过列表推导构建列表
- python列表推导
- Python 列表内字符编码问题,encode和decode
- [Dynamic Language] Python 列表推导
- Python中利用列表推导式实现矩阵置换时发现的"问题"
- C++初始化列表问题,类中有一个对象类型的数组成员变量,在初始化列表中初始化时报错“[]”操作符语法错误
- Python 列表推导
- python 列表,字典 ,集合推导
- python学习笔记——列表推导 list comprehension
- Python笔记(五)--变量类型之列表
- Python问题列表
- python读取文本文件URL列表遇到的问题和加载中数据获取问题
- python中关于class类中一个实例变量的引用问题
- [python笔记]for循环中循环变量迭代问题
- python 列表推导和生成器表达式
- python selenium 常见问题列表
- 关于python的列表排序问题汇总