在Python2中的列表推導(dǎo)式中for關(guān)鍵字的賦值操作會對聲明的變量產(chǎn)生影響
例如下邊的Python2控制臺交互
>>> x = 'init'
>>> y = [x for x in 'ABC']
>>> x
C
列表推導(dǎo)中的變量x將聲明的x覆蓋了万俗。這個問題在python3中已經(jīng)被修復(fù)了讽挟,表達(dá)式內(nèi)部的變量和賦值递沪,只在局部起作用,表達(dá)式上下文內(nèi)的同名變量還是可以正常引用赠摇。
這是Python3的代碼
>>> x = 'init'
>>> y = [x for x in 'ABC']
>>> x
init
>>>y
['A', 'B', 'C']
x的值被保留了固逗,列表推導(dǎo)也創(chuàng)建了正確的列表