2012-09-05 67 views
3

预计Python中的嵌套变量是否重叠? 例如:Python中的嵌套变量

for i in range(1,10): 
    x = [0xFF for i in range(6)] 
    print(i) 

预期结果(序列)是什么?使用Python 2.7我得到九个五分。

回答

4

你所看到的应用列表解析的副作用。 列表理解中的迭代器变量是与for循环之一相同的。这意味着列表理解的迭代器变量是而不是本地表达式本身。

实施例:

>>> [x for x in range(10)] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> print x 
9 

所以既迭代变量名应该是不同的。

1

i将指向范围内的最后一个元素(6),即5,当列表解析完成的i值是5,这就是你在打印时

当你打印出来

您的外部环路范围内运行(1,10),即9倍

In [47]: len(range(1,10)) 
Out[47]: 9 
3

Python没有块范围。因此,您在块内更改的变量将在该块之外可见。只有类,函数和模块创建范围。

0

当你声明任何变量时,它将存储该值。在python中,当你初始化任何变量并存储一些值时,它将一直可用,直到变量不会被销毁。所以当你在循环内写入x = 10时,你也会得到x。如果你想删除那个变量,然后输入del x那么你将不会得到x的值