Python2和Python3中列表推導式的不同

2022-09-06 07:48:09 字數 1263 閱讀 5083

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

python3和python2的區別

1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...

Python2和Python3的比較

python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...

python3和python2的區別

這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...