首页 > 编程语言 > 详细

Python2和Python3中列表推导式的不同

时间:2019-05-02 12:51:39      阅读:82      评论:0      收藏:0      [点我收藏+]

Python2和Python3中列表推导式的不同

python2

>>> x = 'my girl'
>>> lst = [x for x in 'hello']
>>> x
'o'

可以看到x的值被覆盖了

来看python3

python3

>>> 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

>>> i=10               
>>> for i in range(5): 
...     print(i)       
...                    
0                      
1                      
2                      
3                      
4                      
>>> i                  
4                      


小结

  • python2中列表推导式中定义的变量会覆盖前面同名的变量
  • python3中不会,因为列表推导式中定义的变量只作用于列表推导式内部(局部作用域)
  • for循环中都会覆盖之前的变量,不管是python2还是python3

Python2和Python3中列表推导式的不同

原文:https://www.cnblogs.com/zzliu/p/10801972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!