关于 Python 中的 for 问题

Python 2 和 Python 3 中的 for 有一点不一样

# Python2
>>> i = 1                       
>>> a = [i for i in range(4)]   
>>> i                           
3                               
# Python3
>>> i = 1                      
>>> a = [i for i in range(4)]  
>>> i                          
1                              

Python 2 中的 for 循环会污染全局变量,Python 3 不会。这个问题只会出现在列表推导式中,对于普通的 for 循环,i 的值都是变的。对于集合推导式,i 的值不会变

# Python3
>>> i = 2                         
>>> a = {i for i in range(32)}    
>>> a                             
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
, 24, 25, 26, 27, 28, 29, 30, 31} 
>>> i                             
2        
# Python 2 和 Python 3 一样的结果
# Python2 
>>> i = 3
>>> a = {i for i in range(6)}
>>> i
3                       
>>> i = 3             
>>> for i in range(5):
...     print(i)      
...                   
0                     
1                     
2                     
3                     
4                     
>>> i                 
4                     
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在尼泊尔,特别是在山区里,我们会看到衣着色彩斑斓的女人,在劳作,在聊天,在观望。随处可见,她们身穿传统服饰,随手一...
    柳絮纷飞啊阅读 372评论 2 1
  • 在北京生活了二十多年,前十八年一直生活在京郊,远离天子脚下,至今工作三年了,每天生活在二环里,竟没来过一次紫禁城。...
    小智慧大Amy阅读 496评论 0 0
  • 我是一个热爱听音乐的人 学生时期的我,曾一度痴迷于陈奕迅的歌 手机里,电脑里,QQ空间背景都是他的音乐和照片 也曾...
    耳东陈_e22d阅读 1,063评论 0 0
  • 列车这头是期盼 那头是想念 车厢里等待 车头向未来 装载着幸福 在爱情的轨道上 缓缓驶过来 是谁深情款款 伫立成站...
    LS醉生梦死阅读 153评论 2 2