Python2和Python3中列表推導式的不同
阿新 • • 發佈:2019-05-02
作用 循環 沒有 補充 小結 創建 列表推導 列表推導式 red
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中列表推導式的不同