日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 2x和python 3x的区别_python2x和3x区别

發布時間:2023/12/18 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 2x和python 3x的区别_python2x和3x区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python - 2x和3x的區別

編碼:

回到頂部

Python2的默認編碼是ASCII碼,這是導致Python2中經常遇到編碼問題的主要原因之一,至于原因,在于Python這門語言出現的時候,還沒有Unicode!

Python3默認編碼是Unicode,因此,不必再文件頂部寫# codeing=utf-8了。

#Python2:

importsys>>>sys.getdefaultencoding()'ascii'

#Python3:

importsys>>>sys.getdefaultencoding()'utf-8'

查看默認編碼

字符串:

回到頂部

Python2中,字符串有兩種類型,Unicode和str,前者表示文本字符串,后者表示字節序列,但在Python2中并沒有嚴格的界限,所以容易出錯。

Python3中,str表示字符串,byte表示字節序列,任何需要寫入文本或者網絡傳輸的數據都只接收字節序列,這就從源頭上阻止編碼錯誤的問題。

True和False:

回到頂部

Python2中true和false是兩個全局變量,在數值上對應1和0

Python3則把true和false指定為關鍵字,永遠指向兩個固定的對象,不能被重新賦值

#Python2:

>>> True =False>>>True

False>>> True = 1

>>>True1

>>> False = 'x'

>>>False'x'

#Python3:

>>> True =False

File"", line 1SyntaxError: can't assign to keyword

>>> True = 1File"", line 1SyntaxError: can't assign to keyword

>>> importkeyword>>> keyword.iskeyword('True')

True>>>keyword.kwlist

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

True和False的區別

nonlocal:

回到頂部

Python2中無法給嵌套函數中的變量聲明為非局部變量,只能使用global關鍵字聲明某個變量為全局變量

Python3中新增關鍵字nonlocal,可以解決這一問題

a = 3

deffunc1():

a= 1

deffoo():

a= 2foo()print(a) #1

func1()deffunc2():

a = 1

def foo():

nonlocal a

a = 2

foo()

print(a) # 2

func2()

nonlocal

語法:

回到頂部

去除了 <> ,全部使用 !=? # python2兩個都可以,python3則只能用 !=

去除 '' ,新增repr()

新增關鍵字:as,with,True,False,None

整形除法返回浮點數,如想要得到整形結果,使用 //

去除print語句,變為print()函數實現相同功能,同樣的還有exec語句,改為exec()函數

改變了順序操作符的行為,例如,x > y,當x和y類型不同時則拋出TypeError,而不是返回bool值

輸入函數由raw_input改為input

去除元組參數解包,不能再def(a,(b,c)):pass這樣定義函數

新的super(),可以不用傳遞參數

#Python2

>>> 6 / 2

3

>>> 6 //2

3

>>> 1 <> 2True>>> 1 != 2True>>> 'a' < 1False>>> 'a' < 1False>>> 'a' > 1True

#Python3

>>> 6 / 2

3.0

>>> 6 //2

3

>>> 1 <> 2File"", line 1

1 <> 2

^SyntaxError: invalid syntax>>> 1 != 2True>>> 'a' < 1Traceback (most recent call last):

File"", line 1, in TypeError:'

!=示例

異常:

回到頂部

異常都繼承BaseException

用 raise Exception(args)代替 raise Exception, args語法

捕獲異常的語法改變,引入了as關鍵字來標識異常實例

模塊:

回到頂部

移除cPickle模塊,可以使用pickle模塊代替

移除imageop模塊

移除bsddb模塊

移除new模塊

os.tmpnam()和os.tmpfile()函數被移動到tmpfile模塊下

tokenize模塊現在使用bytes工作。主要的入口點不再是generate_tokens,而是 tokenize.tokenize()

其它:

回到頂部

xrange()改為range(),要想使用range()獲得一個list,必須顯示調用:list(range(100))

bytes對象不能hash,也不支持 b.lower()、b.strip()和b.split()方法,但對于后兩者可以使用 b.strip(b’

\n\t\r \f’)和b.split(b’ ‘)來達到相同目的

zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload

()函數都被去除了

Python3中file類被廢棄

#Python2

>>>file

#Python3

>>>file

Traceback (most recent call last):

File"", line 1, in NameError: name'file' is not defined

file示例

摘自:

總結

以上是生活随笔為你收集整理的python 2x和python 3x的区别_python2x和3x区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。