python3與python2
⑴ python2和python3的區別
簡單的說,2是舊3是新,3是2的升級版,3完全高於2,2是時代的眼淚3是現在和未來,2逐漸被淘汰3用的人越來越多。
之前兩個版本共存只是因為諸多package的更新換代並沒有跟上,但是到了現在只要還有活人維護的package基本都兼容3了,然而新建的package卻越來越多不兼容2。使用2的意義基本沒有了,日常用3大不了留一個2備用就行。
⑵ Python 2 和 Python 3 有哪些主要區別
> 1. print不再是語句,而是函數,比如原來是 print 'abc' 現在是 print('abc')
但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能
> 2. 在Python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class Foobar(object): pass 顯式地子類化object
但是最好還是加上. 主要區別在於 old-style 是 classtype 類型而 new-style 是 type類型
> 3. 原來1/2(兩個整數相除)結果是0,現在是0.5了
python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算
> 4. 新的字元串格式化方法format取代%
錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支持 % 算符
> 6. xrange重命名為range
同時更改的還有一系列內置函數及方法, 都返回迭代器對象, 而不是列表或者 元組, 比如 filter, map, dict.items 等
> 7. !=取代 < >
python2 也很少有人用 < > 所以不算什麼修改
> 8. long重命名為int
不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支持高精度整數運算.
> 9. except Exception, e變成except (Exception) as e
只有 python2.5 及以下版本不支持該語法. python2.6 是支持的. 不算新東西
> 10. exec變成函數
類似 print() 的變化, 之前是語句.
簡單補充下
* 主要是類庫的變化, 組織結構變了些. 但功能沒變. urlparse - > urllib.parse 這樣的變化
* 最核心的變化它沒有說, 對 bytes 和 原生 UNICODE 字元串的支持, 刪除了 unicode 對象, str 為原生 unicode 字元串, bytes 替代了之前的 str 這個是最核心的.
* 其它... 貌似不怎麼重要了.
⑶ Python3和Python2的區別
具體區別如下
1:列印時,py2需要可以不需要加括弧,py3 需要python 2 :print ('lili') , print 'lili'python 3 : print ('lili') python3 必須加括弧exec語句被python3廢棄,統一使用exec函數
2:內涵
Python2:1,臃腫,源碼的重復量很多。 2,語法不清晰,摻雜著C,php,Java的一些陋習。
Python3:幾乎是重構後的源碼,規范,清晰,優美。
3: 輸出中文的區別python2:要輸出中文 需加 # -*- encoding:utf-8 -*-Python3 :直接輸出
4:input不同python2 :raw_input python3 :input 統一使用input函數
5:指定位元組python2在編譯安裝時,可以通過參數-----enable-unicode=ucs2 或-----enable-unicode=ucs4分別用於指定使用2個位元組、4個位元組表示一個unicode;python3無法進行選擇,默認使用 ucs4查看當前python中表示unicode字元串時佔用的空間:impor sysprint(sys.maxunicode)#如果值是65535,則表示使用usc2標准,即:2個位元組表示#如果值是1114111,則表示使用usc4標准,即:4個位元組表示
6:py2:xrangerangepy3:range 統一使用range,Python3中range的機制也進行修改並提高了大數據集生成效率
7:在包的知識點里包:一群模塊文件的集合 + __init__區別:py2 : 必須有__init__py3:不是必須的了
8:不相等操作符"<>"被Python3廢棄,統一使用"!="
9:long整數類型被Python3廢棄,統一使用int
10:迭代器iterator的next()函數被Python3廢棄,統一使用next(iterator)
11:異常StandardError 被Python3廢棄,統一使用Exception
12:字典變數的has_key函數被Python廢棄,統一使用in關鍵詞
13:file函數被Python3廢棄,統一使用open來處理文件,可以通過io.IOBase檢查文件類型
⑷ python3和Python2的區別
1. print不再是語句,而是函數,比如原來是 print 'abc' 現在是 print('abc')
但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能
2. 在Python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class Foobar(object): pass 顯式地子類化object
但是最好還是加上. 主要區別在於 old-style 是 classtype 類型而 new-style 是 type類型
3. 原來1/2(兩個整數相除)結果是0,現在是0.5了
python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算
4. 新的字元串格式化方法format取代%
錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支持 % 算符!
⑸ python3 跟python2 有什麼區別
如果不考慮模塊的話,只有輸出語句帶不帶括弧的差異。
有些模塊的函數,兩個版本是有差異的。
由於現在很多書籍都是用python2.7的代碼寫的,如果只是學基礎知識的話,建議學python3.x;如果深入學習某一方面,則需要查閱相關書籍,這樣的話建議學python2.7。
如果python3.6在以後比較成熟了,由python2.7轉過去3.x就是比較容易的事情。
⑹ 列舉python2和python3的區別
python2已經舍棄不用了,老古董,很少有人繼續使用python2
⑺ python3和python2的區別
1.性能
Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字元串和整形操作上可以取得很好的優化結果。
Py3.1性能比Py2.5慢15%,還有很大的提升空間。
2.編碼
Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>> 中國 = 'china'
>>>print(中國)
china
3. 語法
1)去除了<>,全部改用!=
在Python 2里,為了得到一個任意對象的字元串表示,有一種把對象包裝在反引號里(比如`x`)的特殊語法。在Python 3里,這種能力仍然存在,但是你不能再使用反引號獲得這種字元串表示了。你需要使用全局函數repr()。
⑻ python中python2和python3之間怎麼轉換
python中python2和python3之間的轉換方式如下:
一、放棄python 2.6之前的python版本
python 2.6之前的python版本缺少一些新特性,會給你的遷移工作帶來不少麻煩。如果不是迫不得已還是放棄對之前版本的支持吧。
二、使用 2to3 工具對代碼進行檢查和轉換
2to3是python自帶的一個代碼轉換工具,可以將python2的代碼自動轉換為python3的代碼。當然,不幸的是轉換出的代碼並沒有對python2的兼容做任何的處理。所以我們並不真正使用2to3轉換出的代碼。執行2to3.py 查看輸出信息,並修正相關問題。為了簡化這個轉換過程,這個腳本會將你的Python 2程序源文件作為輸入,然後自動將其轉換到Python 3的形式。