2012-09-05 66 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的值