Python2 x與Python3 x的區別

2021-09-26 21:33:45 字數 2292 閱讀 8988

python2是用ascii碼作為預設編碼,因此在專案**中如果出現中文是會報錯

需要新增 #-- encoding:utf-8 -- 標頭檔案來解決中文亂碼問題

python3中/表示真除,%表示取餘,//表示地板除(結果取整);

python2中/表示根據除數被除數小數點位得到結果,//同樣表示地板除

統一一下:python3中/表示真除,%表示取餘,//結果取整;python2中帶上小數點/表示真除,%表示取餘,//結果取整

python3中的range()函式是生成乙個陣列

函式說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成乙個序列。

range示例:

range(5)

[0, 1, 2, 3, 4]

range(1,5)

[1, 2, 3, 4]

range(0,6,2)

[0, 2, 4]

python2中的xrange()和python3中的range()用法是完全相同的,所不同的是生成的不是乙個陣列,而是乙個生成器。

xrange示例:

xrange(5)

xrange(5)

list(xrange(5))

[0, 1, 2, 3, 4]

xrange(1,5)

xrange(1, 5)

list(xrange(1,5))

[1, 2, 3, 4]

xrange(0,6,2)

xrange(0, 6, 2)

list(xrange(0,6,2))

[0, 2, 4]

這兩個輸出的結果都是一樣的,實際上有很多不同,range會直接生成乙個list物件:

a = range(0,10)

print type(a)

print a

print a[0], a[1]

輸出結果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

0 1而xrange則不會直接生成乙個list,而是每次呼叫返回其中的乙個值:

a = xrange(0,10)

print type(a)

print a

print a[0], a[1]

輸出結果:

xrange(10)

0 1所以xrange做迴圈的效能比range好,尤其是返回很大的時候,盡量用xrange吧,除非你是要返回乙個列表。

print 在python2中作為語句,在python3中作為函式

例項1:

print(』『hello』』):在python2中(』『hello』』)是語句的一部分,是乙個整體;在python3中』『hello』『是作為乙個引數出入到函式中。

例項2:

print(』『hello』』, 『『world』』):在python2中輸出乙個元組,在python3中輸出兩個字串預設中間用空格隔開。

注:在python2.6+中匯入future模組中的print_fuction才能將print當做函式使用。

python2中字串有兩個型別:unicode和str,前者表示文字字串,後者表示位元組序列,兩者沒有明顯的界限,開發者也感覺很混亂。

python3中做了嚴格的區分,str表示字串,byte表示位元組序列,任何需要寫入文字或者網路傳輸的資料都只接收位元組序列。

補充:encode()和decode()

decode 解碼,encode 編碼:字串在python內部的表示是unicode編碼,在做編碼轉換時,通常需要以unicode作為中間編碼, 即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

例項:s=『中文』 如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用 decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。

Python2 x與Python3 x的區別

這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...

python2 X與python3 X的區別

前言 最近在復現一些大牛的演算法,經常會遇到一些關於版本不相容的問題,導致演算法執行錯誤。甚是討厭,坑位如下。問題1 float object cannot be interpreted as an integer。原因 在python2,只留下了整數部分,去掉了小數,是int型。在python3裡...

Python2 X輸入函式

mystr raw input 請輸入指令 import os os.system mystr 執行結果 ps input返回的是數值型別,如int,float raw inpout返回的是 字串型別 string型別 若輸入是表示式,則input會計算出表示式的值,而raw input會原樣輸出 ...