python2python3
『壹』 python3和python2的區別
這個星期開始學習Python了,因為看的書都是基於Python2.x,而且我安裝的是Python3.1,所以書上寫的地方好多都不適用於Python3.1,特意在Google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查找方便,也可以分享給想學習Python的friends.
1.性能
Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字元串和整形操作上可
以取得很好的優化結果。
Py3.1性能比Py2.5慢15%,還有很大的提升空間。
2.編碼
Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>> 中國 = 'china'
>>>print(中國)
china
『貳』 Python2與Python3的區別
從基本設計上來說,Python3的目的就是沒有代碼兼容的包袱情況下進行改進了Python,相對於Python2來說,Python3有很多的改進,更加容易理解,也更加合理。
而且從應用的角度上來說,pypy、web框架、科學計算包、scrapy等常用模塊都是支持Python3的,但是部分比較陳舊的庫已經沒有人進行維護,也就沒有支持Python3.
當我們進行日常使用的情況之下,可以直接寫Python2\3兼容的代碼,相對於來說,Python2對於舊庫的支持更多一些,至少在學界還是比較流行的。
相對於來說,Python3對於Python學習來說更加具有好處,也是未來流行的趨勢,建議直接學習Python3,未來使用率更為廣泛。
『叄』 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 這個是最核心的.
* 其它... 貌似不怎麼重要了.
『肆』 Python 2 和 Python 3 之間的區別
按照當前時間點(Python 2.7 和 Python3.6),從宏觀上介紹下Python 3和Python 2的區別,並舉一些對應常見的例子:
1. 統一了字元編碼支持。我特意把它拿出來放在第一條...
2. 增加了新的語法。print/exec等成為了函數,格式化字元串變數,類型標注,添加了nonlocal、yield from、async/await、yield for關鍵詞和__annotations__、__context__、__traceback__、__qualname__等nder方法。
3. 修改了一些語法。metaclass,raise、map、filter以及dict的items/keys/values方法返回迭代對象而不是列表,描述符協議,保存類屬性定義順序,保存關鍵字參數順序
4. 去掉了一些語法。cmp、<>(也就是!=)、xrange(其實就是range)、不再有經典類
5. 增加一些新的模塊。concurrent.futures、venv、unittest.mock、asyncio、selectors、typing等
6. 修改了一些模塊。主要是對模塊添加函數/類/方法(如functools.lru_cache、threading.Barrier)或者參數。
7. 模塊改名。把一些相關的模塊放進同一個包裡面(如httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib放進了http裡面,urllib, urllib2, urlparse, robotparse放進了urllib裡面),個例如SocketServer改成了socketserver,Queue改成queue等
8. 去掉了一些模塊或者函數。gopherlib、md5、contextlib.nested、inspect.getmoleinfo等。去掉的內容的原因主要是2點:1. 過時的技術產物,已經沒什麼人在用了;2. 出現了新的替代產物後者被證明存在意義不大。理論上對於開發者影響很小。
9. 優化。重新實現了dict可以減少20%-25%的內存使用;提升pickle序列化和反序列化的效率;collections.OrderedDict改用C實現;通過os.scandir對glob模塊中的glob()及iglob()進行優化,使得它們現在大概快了3-6倍等.. 這些都是喜大普奔的好消息,同樣開發者不需要感知,默默的就會讓結果變得更好。
10. 其他。構建過程、C的API、安全性等方面的修改,通常對於開發者不需要關心。
最後,重提一下我經常說的那句話:
『伍』 python2和python3的區別
簡單的說,2是舊3是新,3是2的升級版,3完全高於2,2是時代的眼淚3是現在和未來,2逐漸被淘汰3用的人越來越多。
之前兩個版本共存只是因為諸多package的更新換代並沒有跟上,但是到了現在只要還有活人維護的package基本都兼容3了,然而新建的package卻越來越多不兼容2。使用2的意義基本沒有了,日常用3大不了留一個2備用就行。
『陸』 「python2」和「python3」有什麼區別
簡單的說,2是舊3是新,3是2的升級版,3完全高於2,2是時代的眼淚3是現在和未來,2逐漸被淘汰3用的人越來越多。
之前兩個版本共存只是因為諸多package的更新換代並沒有跟上,但是到了現在只要還有活人維護的package基本都兼容3了,然而新建的package卻越來越多不兼容2。使用2的意義基本沒有了,日常用3大不了留一個2備用就行。
『柒』 python學編程用python3還是python2
如果是從零學習的話建議從python3直接學習,有基礎的話兩者分別學習也沒有壞處。
從發展的角度未來肯定主流是3.x版本,python2與3隻是在部分語法上有區別,有餘力的話都學習也沒有壞處。
現在在網上2和3的兼容擴展模塊也都不少,也根據自己需要的情況進行選擇就行~
『捌』 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檢查文件類型
『玖』 python2和3的區別大嗎
1、Python2之前是非常受歡迎的,現在很多軟體公司依然使用的是Python2,不過由於越來越多的公司開始從Python2遷移到3,因此初學者可以避免花費更多的時間學習過去的版本了。
2、Python2和Python3之間有一些是無法互相兼容的,現在很多開發人員都在使用Python3開發庫,許多老的基於Python2的開發包依然是無法兼容的,想要將Python2庫移植到Python3上,對於初學者來說還是比較困難的事情。
3、Python3有更好的Unicode編碼支持在Python3的語法之中,默認文化字元串就是Unicode,而Python2默認的存儲為ASCII,而且Unicode比ASCII更加通用,可以提供更多的選擇。
4、Python3版本改進了整數除法的問題,在Python2中如果你在小數點後面寫任何一個數字,計算會自動四捨五入的。而使用Python3的情況下是不需要擔心這種情況發生的。
5、兩個版本之間有不同的列印語句聲明語法,是語法差異,不影響Python的功能。
『拾』 測試自動化常用的python語言,兩個版本python2和python3有何區別
Python 3 代表 Python 語言進化的一個產物,為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。所以我們在使用python進行自動化學習的時候,最好要清楚python3.0相比2.0的變化。
Python 3.0的變化主要在以下幾個方面:
變化1:print語句沒有了,取而代之的是print()函數。
變化2:Python 3 使用了文本(text)和(二進制)數據的概念,而非 Unicode 字元串和 8 位字元
串。所有的文本都是 Unicode 編碼的。 Python3.X 源碼文件默認使用utf-8編碼
變化3:Python 2.x中不等於有兩種寫法 != 和 >
Python 3.x中去掉了>, 只有!=一種寫法,還好,我從來沒有使用>的習慣
變化4:列表推導時,不再支持[n for n in a,b]語法,改為[n for n in (a,b)]或[n for n in [a,b]]
變化5:python2中,文件對象有一個xreadlines()方法,返回一個迭代器,一次讀取文件的一行。這在for循環中尤其實用。python3中,xreadlines()方法
不再可用。
主要就是上面5個,如果想對python3的變化還想更多了解,可以搜下傳智播客軟體測試學科的視頻了解下