1. 程式人生 > >Python 2.x和Python 3.x版本區別

Python 2.x和Python 3.x版本區別

摘自《Python快速程式設計入門》 黑馬程式設計師編著

和Python 2.x版本相比,Python 3.x版本在語句輸出、編碼、運算和異常等方面做出了一些調整。

print函式代替了print語句

在Python 2.x中,輸出語句使用的是print語句。
但是在Python 3.x中,print語句沒有了,取而代之的是print函式。
Python 2.x

>>> print (3, 4)
(3, 4)

Python 3.x

>>> print(3, 4)
3 4

Python 3.x預設使用UTF-8編碼

Python 2.x中有ASCII Str()型別,unicode()是單獨的,不是byte型別。
在Python 3.X版本的原始碼中,預設使用的是UTF-8編碼,從而可以很好地支援中文或其他非英文字元。
例如,輸出一句中文,使用Python 2.x和Python 3.x的輸出結果如下所示:
Python 2.x

>>> str = '芒鞋破鉢無人識'
>>> str
'\xe8\x8a\x92\xe9\x9e\x8b\xe7\xa0\xb4\xe9\x92\xb5\xe6\x97\xa0\xe4\xba\xba\xe8\xaf\x86'

Python 3.x

>>> str = '芒鞋破鉢無人識'
>>> str
'芒鞋破鉢無人識'

除法運算

和其他語言相比,Python語言的除法非常高階,它的除法運算包含兩個元素安撫,分別是/和//,這兩個運算子在Python 2.x和Python 3.x中的使用如下所示。

運算子/

在Python 2.x中,使用運算子/進行除法運算的方式和Java、C語言相似,整數相除的結果是一個整數,浮點數除法會保留小數點的部分得到一個浮點數的結果。
在Python 3.x中使用運算子/進行除法運算,整數之前的相處,結果也會是浮點數。
Python 2.x

>>> 1/2
0

Python 3.x

>>> 1/2
0.5

運算子//

使用運算子//進行的除法叫做floor除法,這種除法會對除法的結果自動進行一個floor操作。使用這種運算子進行的除法運算,在Python 2.x和Python 3.x中是一致的。
floor即獲取不大於結果值的最大整數(向下取整)。
Python 2.x

>>> -1//2
-1

Python 3.x

>>> -1//2
-1

異常

異常處理改變的地方主要如下。

區別點 Python 2.x Python 3.x
丟擲的物件 直接丟擲所有型別的物件 只有繼承自BaseException的物件才可以被丟擲
捕獲異常的語法 except Exception, var except Exception as var
異常處理的語法 raise Exception(args) raise Exception, args
異常類的序列和.message屬性 取消

Python 2.x

>>> try:
...     raise TypeError,"型別錯誤"
... except TypeError,err:
...     print err.message
... 
型別錯誤

Python 3.x

>>> try:
...     raise TypeError("型別錯誤")
... except TypeError as err:
...     print(err)
... 
型別錯誤

八進位制字面量表示

在Python 3.x中,表示八進位制字面量的方式只有一種,並且必須寫成”0o1000”這樣的方式,原來“01000”的方式不能使用了。
Python 2.X

>>> 01000
512
>>> 0o1000
512

Python 3.X

>>> 01000
  File "<stdin>", line 1
    01000
        ^
SyntaxError: invalid token
>>> 0o1000
512

不等於運算子

/ Python 2.x Python 3.x
不等於運算子的寫法 兩種,!=<> 一種,只有!=

Python 2.X

>>> 1 != 2
True
>>> 1 <> 2
True

Python 3.x

>>> 1 != 2
True
>>> 1 <> 2
  File "<stdin>", line 1
    1 <> 2
       ^
SyntaxError: invalid syntax

資料型別

  • Python 3.X去除了long型別,現在只有一種整型int,但它的行為就像是Python 2.X版本的Long
    • Python 3.X新增了bytes型別,對應於Python 2.X版本的八位串,定義一個bytes字面量的方法如下:
>>> b = b'china'
>>> type(b)
<class 'bytes'>
    • 字串物件和bytes物件可以使用.encode()(str->bytes)或者.decode()(bytes->str)方法相互轉化。示例程式碼如下:
>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'
  • Python 3.X中,字典的keys()items()、和values()方法用返回檢視代替了列表,而2.x版本中的iterkeys()等函式都被廢棄。同時去掉的還有has_key() 方法,用in替代。

相關推薦

Windows中Python 2.7Python 3.5相容性問題及對應pip使用方法

Python 2和Python 3的同時使用 有很多人想學習Python3,但是暫時又離不開Python2,所以他們在Windows作業系統上同時安裝了Python 2和Python 3,但是在CMD.exe上面執行”python *.py”的時候只能執行

OpenCV 2.X OpenCV 3.X的區別是什麼?

原文連結 儘管3相對與2有一些功能上的增加,但是3和2最大的區別還是在速度上。 最關鍵的不同在於OpenCV 3.x的API。幾乎所有的OpenCV 3.X 方法都採用OpenCL加速了。所以所有的能夠在GPU上執行的方法在效能上都會有10% - 230%的

《iOS開發指南:從零基礎到App Store上架》第23版的區別

新浪微博:東門兜 第3章 UIView與檢視 新書中添加了“3.3 動作與輸出口”。 新書中去掉了 “3.6 螢幕滾動控制元件ScrollView” 放入第4章 “3.10 屏幕布局” 放入第4章 “3.11 選擇器” 放入第5章 “3.12 集合

Python 2.xPython 3.x版本區別

摘自《Python快速程式設計入門》 黑馬程式設計師編著 和Python 2.x版本相比,Python 3.x版本在語句輸出、編碼、運算和異常等方面做出了一些調整。 print函式代替了print語句 在Python 2.x中,輸出語句使用的是prin

python2.Xpython 3.X區別(持續更新中)

在自學python過程中躺過的那些坑坑窪窪。。。 覺得有必要記錄一下 一。raw_input()和input()的區別和整合 1,在Python2.x中raw_input()和input(),兩個

Python 2.x升級到3.x

伺服器上預設安裝的是2.7版本的python,現在想手動升到3.x版本 記錄一下 1.去官網/映象下載3.x的安裝包下載網址 2.解壓檔案,執行./configure進行配置 該步驟報錯一般都是沒裝編譯器 –》 yum install make gcc g

windows 10 python 2.7python3.6共存解決方法pip安裝

這樣的 num tool python2.x script tro 判斷 解決方法 自動化 一、首先去python官網將兩個版本下載並安裝; 然後進入windows的環境變量,檢查下面4個變量: 1.C:\Python272.C:\Python27\Scripts3.D:\

python-問題14問題3

問題14 Write a function to find the longest common prefix string amongst an array of strings。兩個字串的最長公共字首 問題3 Longest Substring Without Repeating C

Hadoop 2.x與Hadoop 3.x之間的功能比較

Hadoop 2.x與Hadoop 3.x之間的功能比較 1.JDK要求 2.HDFS支援糾刪碼 3.YARN Timeline Service版本更新到v.2 4.重寫相關shell指令碼,比如所有指令碼都以hadoop-env.sh為基礎指令碼等等

Mac 下升級python 2.7 到python 3.6

一、前言 mac 系統自帶python 2.7本文目的將python 2.7升級到python 3.6 網上有部分文章建議,兩個版本共存,博主並不知道版本共存好用,還是升級之後好用,所以讀者們慎選 二、去官網下載最新的安裝包 官網 選擇最新的版本下載,會有Mac OSC 和Wi

python----2 變數簡單資料型別

變數 和C\C++一樣,值可以變化,可以用其儲存任何東西。(相當於一個容器) 變數的命名: + 首字元必須是字母(大寫或小寫)或者一下下劃線(’_’) + 名稱的其他部分可以由字母(大寫或小寫)、下劃線(‘ _ ’)或數字(0-9)組成 + 對大小寫敏感 + 有效變數名稱的

linux上python 2.7 升級為 3.5

1.下載python3.5.2的包 wegt https//www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 2.解壓包 tar -zxvf Python-3.5.2.tgz 3.執行./configure cd Python-3.

mac Python 2.7 升級到3.6.5

下載pkg版本,並安裝。安裝選預設路徑,會安裝到/Library/Frameworks/Python.framework/Versions/目錄下刪除python2.7sudo rm -R /System/Library/Frameworks/Python.framework

python迭代解析(3):range、map、zip、filterreduce函式

range range()是一個內建函式,它返回一個數字序列,功能和Linux下的seq命令差不多。 >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(5,10)) [5, 6, 7,

Python 2.7NLTK安裝教程

安裝。安裝時會出現以下錯誤:Python version 2.7 required, which was not found in the registry。解決辦法:(1)新建一個register.py檔案,把以下程式碼貼上進去,儲存到D盤。# # script to register Python 2.0

Mac OSX 正確地同時安裝Python 2.7 Python3

Python3出來了(其實已經出來很久了,暈)! 但是還是有很多library還是使用Python2.7,所以要怎麼在Mac裡面同時裝這兩個版本,並且和系統所使用的Python區分開來呢?今天要寫的是如何第一次就正確安裝好,並且切換預設版本,不在誤用系統的Python。 主要就這幾個步驟而已,不會太困難

Tomcat 7.x 6.x JDK 7 舊版本下載教程

自從Tomcat 和 JDK 一直更新,導致了專案組維護以前專案的困難: 比如說:Tomcat 相容的 JDK的版本不同的相容問題 Tomcat 和 一些jar 也有一些衝突,比如說 s

centos 6.9 升級python 2.6.6 至 3.5.0

1、下載python3.5 wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz 解壓 tar zxvf Python-3.5.0.tgz 進入目錄 cd Python-3.5.0 配置 ./c

接口自動化測試Python(2)_使用python對excel進行操作

pip安裝 print eight tps cell .com family logs 運行 如何使用Python對excel進行簡單的操作 一. 通過pip安裝xlwt, xlrd這兩個模塊 *pip install xlwt *pip insta

Cent OS 7.x 安裝Zabbix 3.x

zabbix centos 系統環境: VMware Workstation 12 Pro 12.5.0Cent OS 7.3_1611Zabbix 3.2---以下操作均以root身份操作---1:設置網卡為開機啟動Shell>ifconfig1. [root@localhost