新手學習python2還是python3?詳細區別講解
python2和python3的版本,目前主要分為兩類:
Python 2.x的版本,被稱為Python2,目前最新版是2.7.18
Python 3.x的版本,被稱為Python3,目前最新版是3.9.1
從Python2到Python3是一個大版本升級,兩者之間有很多地方互不相容。
使用時當然選擇越新的Python版本越好,版本越老的程式碼越難維護。
維護老版本的程式碼時,需要了解各版本之間的主要差異。有時看到一些程式碼的語法特點,可以大致猜出它是什麼版本
Python2和Python3之間的變化主要在以下幾個方面
1.print函式:
Python 2:print是語句
print "Hello World!" # 結果:Hello World!
Python 3:print是函式
print('Hello World!') # 結果:Hello World! print 'Hello World' # 結果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?
2.整數相除:
Python 2:3/2的結果是整數
print 3 / 2 # 結果:1 print 3 / 2.0 # 結果:1.5
Python 3:3/2的結果是浮點數
print(3 / 2) # 結果:1.5 print(3 / 2.0) # 結果:1.5
3.Unicode:
Python 2:有兩種字串型別:str和unicode
a = '您好' print a # 結果:SyntaxError: Non-ASCII character 'xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details # 在Python 2中,如果程式碼中包含非英文字元,需要在程式碼檔案的最開始宣告編碼# _*_ coding:utf-8 _*_ a = '您好' print a # 結果:您好
Python 3:字串預設就是Unicode
a = '您好' print(a) # 結果:您好
Python 3中的str相當於Python 2中的unicode
4.異常處理:
Python 2:
try: result = 1 / 0 print result except ZeroDivisionError, e: print str(e) # 結果:integer division or modulo by zero
或
try: result = 1 / 0 print result except ZeroDivisionError as e: print str(e) # 結果:integer division or modulo by zero
Python 3:只支援as關鍵字
try: result = 1 / 0 print(result) except ZeroDivisionError as e: print(str(e)) # 結果:division by zero
5.xrange:
Python 2:有 range 和 xrange 兩個方法
區別:
range返回一個list,在被呼叫的時候即返回整個序列
xrange返回一個iterator,在每次迴圈中生成序列的下一個數字
# range print range(4) # 結果:[0, 1, 2, 3] # xrange print xrange(4) # 結果:xrang(4)
Python 3:不再支援 xrange 方法
print(range(4)) # 結果:range(0, 4) for i in range(4): print(i, end=' ') # 結果:0 1 2 3
Python 3中的 range 方法就相當於 Python 2中的 xrange 方法
6.map函式:
Python 2:map函式返回list
print map(lambda x: x+1, range(5)) # 結果:[1, 2, 3, 4, 5]
Python 3:map函式返回iterator
print(map(lambda x: x+1, range(5))) # 結果:<map object at 0x00000233A7B85E10> print(list(map(lambda x: x+1, range(5)))) # 結果:[1, 2, 3, 4, 5]
filter函式在Python 2和Python 3中也是同樣的區別
7.不支援has_key:
Python 2:
my_dict = {"age": 30, "name": "Zhang San"}print my_dict.has_key("age")print "age" in my_dict # 結果:True# True
Python 3:
my_dict = {"age": 30, "name": "Zhang San"}print("age" in my_dict) # 結果:True print(person.has_key("age")) # 結果:AttributeError: 'dict' object has no attribute 'has_key'
以上就是兩個版本的差異了,新入門的同學建議學習Python3,這是以後發展的趨勢。正在學習Python2的同學也不要著急,記住上面的知識點就可以快速上手Python3啦!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2831103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學習Python選擇Python2還是Python3呢?Python
- 新手學python哪個版本好?Python2與Python3有何區別?Python
- Python2和Python3的區別?Python入門學習Python
- 新手用python2還是3Python
- DeFi和CeFi的區別詳細講解
- Python2和Python3的區別Python
- Python2與Python3的區別Python
- python3和python2中的filter區別PythonFilter
- Python初學者,選擇Python2還是選擇Python3好?Python
- 機器學習之決策樹詳細講解及程式碼講解機器學習
- Python2 和 Python3 的區別及相容技巧Python
- 學Python用哪個版本?Python3和Python2有何區別?Python
- 學Python用哪個版本?Python2與Python3有何區別?Python
- Python2和Python3有何區別?小白入門必看!Python
- 誰可以詳細講講機器學習,深度學習,神經網路,卷積神經網路的區別以及應用場景機器學習深度學習神經網路卷積
- dart類詳細講解Dart
- 高可用和負載均衡的三大區別詳細講解-行雲管家負載
- Python2與Python3有何區別?選擇哪個合適?Python
- urllib庫在python2和python3環境下的使用區別Python
- 指標的詳細講解指標
- Go Struct超詳細講解GoStruct
- 解決問題:作為剛入行的前端新手,出活重要還是學習重要?前端
- react的詳細知識講解!React
- Java中的static詳細講解Java
- MyBatis-Plus詳細講解(一)MyBatis
- 詳細講解函式呼叫原理函式
- Spring @Conditional註解 詳細講解及示例Spring
- Spring 註解學習 詳細程式碼示例Spring
- 詳細講解23種設計模式設計模式
- 演算法--揹包九講(詳細講解+程式碼)演算法
- CreateThread()與beginthread()的區別詳細解析thread
- spring 詳細講解(ioc,依賴注入,aop)Spring依賴注入
- Mbps 及其相關單位詳細講解
- MVC 三層架構案例詳細講解MVC架構
- 網路安全Bypass網路卡詳細講解
- 詳細講解!RabbitMQ防止資料丟失MQ
- EventBus 3.0+ 原始碼詳解(史上最詳細圖文講解)原始碼
- anaconda和pycharm區別是什麼?Python學習!PyCharmPython