Python2和Python3中列表推导式的不同
python2
>>> x = 'my girl'
>>> lst = [x for x in 'hello']
>>> x
'o'
可以看到x的值被覆盖了
来看python3
python3
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> x = 'my girl'
>>> lst = [x for x in 'hello']
>>> x
'my girl'
x的值没有被覆盖,这是因为python3为列表推导式创建了局部作用域,这个局部作用域内定义的变量不会对全局作用域的变量造成干扰
补充: for 循环与列表推导式的情况不同,无论是python2还是python3都会覆盖
python2
>>> i=10
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> i
4
python3
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> i=10
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> i
4
总结
python2中列表推导式中定义的变量会覆盖前面同名的变量 - python3中不会,因为列表推导式中定义的变量只作用于列表推导式内部(局部作用域) - for循环中都会覆盖之前的变量,不管是python2还是python3
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16761763.html

浙公网安备 33010602011771号