當前位置:成語大全網 - 書法字典 - Python3.4學習notes 3.x和2.x的區別,持續更新。

Python3.4學習notes 3.x和2.x的區別,持續更新。

Python3.4學習筆記(3.x和2.x的區別

在2.x中:打印html,在3.x中必須改為:打印(html)。

導入urllib2

ImportError:沒有名為“urllib2”的模塊

在python3.x中,使用urllib.request而不是urllib2。

導入線程

ImportError:沒有名為“thread”的模塊

在python3.x中,用_thread(前面加下劃線)代替thread。

在2.x中,Exception異常,e: 3.x中,except(異常):

=================================

打印功能

雖然print語法是Python 3中的壹個小變化,應該廣為人知,但還是值得壹提的是,Python 2中的print語句在Python 3中被print()函數取代,這意味著需要輸出的對象在Python 3中必須用括號括起來。

在Python 2中也可以使用額外的括號。另壹方面,如果想在Python2中不帶括號調用Python 3中的print函數,就會觸發SyntaxError。

Python 2.7.6

打印“Python”,python_version()

打印“妳好,世界!”

打印(“妳好,世界!”)

打印“文本”,;打印“在同壹行打印更多文本”

輸出:

妳好,世界!

妳好,世界!

文本在同壹行打印更多文本

-

Python 3.4.1

print('Python ',python_version())

打印(“妳好,世界!”)

print("some text,",end= " ")

打印(“在同壹行打印更多文本”)

輸出:

妳好,世界!

壹些文本,在同壹行打印更多的文本

打印“妳好,世界!”

文件" & ltipython-input-3-139 a7c 5835 BD >,行1

打印“妳好,世界!”

^

語法錯誤:無效語法

註意:在Python中,不管有沒有括號,輸出“Hello World”都是正常的。

但是如果多個對象同時輸出在括號裏,就會創建壹個tuple,因為在Python 2中,print是壹個語句,而不是壹個函數調用。

打印“Python”,python_version()

打印(' a ',' b ')

打印' a ',' b '

Python 2.7.7

('甲','乙')

壹個b

-

整數除法

因為人們往往會忽略Python 3在整數除法上的變化(寫錯了不會觸發語法錯誤),所以在Python 2中移植代碼或者執行Python 3的代碼時,我們需要特別註意這種變化。

所以我還是會盡量使用float(3)/2或者3/2.0,而不是Python 3腳本中的3/2,以避開Python中的代碼。

2環境可能會導致錯誤(或者相反,使用Python 2腳本中的from __future__ import division來使用Python。

3)的除法。

Python 2.7.6

3 / 2 = 1

3 // 2 = 1

3 / 2.0 = 1.5

3 // 2.0 = 1.0

Python 3.4.1

3 / 2 = 1.5

3 // 2 = 1

3 / 2.0 = 1.5

3 // 2.0 = 1.0

-

統壹碼

Python 2有壹個基於ascii的str()類型,可以通過單獨的unicode()函數轉換成unicode類型,但是沒有byte類型。

在Python 3中,終於有了Unicode(utf-8)字符串和兩個字節類:bytes和bytearrays。

Python 2.7.6

打印類型(unicode('這類似於python3字符串類型'))

& lt鍵入“unicode”& gt;

打印類型(b '字節類型不存在')

& lt“字符串”類型& gt

打印“它們真的是壹樣的”

他們真的是壹樣的

打印類型(bytearray(雖然b'bytearray奇怪地存在'))

& lt鍵入“bytearray”& gt;

Python 3.4.1有& ltclass ' bytes ' & gt

print('and Python ',python_version(),end= " ")

print(' also has ',type(bytearray(b'bytearrays '))

而Python 3.4.1也有& lt類“bytearray”& gt;

1

請註意,我們不能為數據添加字符串'+ b '字節'

-

類型錯誤回溯(最近壹次調用)

& ltipython-input-13-d3e 8942 CCF 81 & gt;在& lt模塊& gt()

-& gt;1 '註意,我們不能為數據添加字符串'+ b '字節'

TypeError:無法將“bytes”對象隱式轉換為str

=================================

python 2.4和python 3.0的比較

1.打印語句到函數的變化。

原文:打印1,2+3

更改為:打印(1,2+3)

第二,range和xrange

Original: range( 0,4)結果是list [0,1,2,3]。

更改為:列表(範圍(0,4))

原文:xrange( 0,4)適用於for循環的變量控制。

更改為:範圍(0,4)

第三,字符串

Original:字符串存儲為8位字符串。

更改為:字符串存儲為16位Unicode字符串。

第四,try except語句的變化

在2.x中,Exception異常,e: 3.x中,except(異常):

五、打開文件

原件:文件(...)

或者打開(...)

替換為:

您只能使用open(...)

6.從鍵盤輸入字符串。

Original: raw_input(“提示信息”)

更改為:輸入(“提示信息”)

七、字節數據類型

bytes對象是壹個不可變的數組。這些項目是8位字節,用0 & lt= x & lt256.

Bytes可以看作壹個“字節數組”對象,每個元素是壹個8位字節,取值範圍為0~255。

因為在python 3.0中字符串是以unicode存儲的,所以在編寫二進制文件時,字符串不能直接寫入(或讀取),必須以某種方式編碼成字節序列後才能寫入。

(a)字符串編碼(encode)是字節。

例如:s = "張三abc12 "

B = s.encode(編碼方法)

# b是字節類型的數據。

#常用的編碼方式有:“UFT-16”、“UTF-8”、“GBK”、“GB 2312”、“ASCII”、“拉丁1”等。

#註意:當字符串不能按照指定的編碼方法進行編碼時,將會引發異常。

(2)字節被解碼成字符串。

S = "張三abc12 "

B = s.encode( "gbk") # String s編碼為gbk格式的字節序列。

S1 = b.decode("gbk") #將字節序列B解碼為gbk格式的字符串。

# Description,當字節序列無法以指定的編碼格式解碼時,將引發異常。

(3)使用方法示例

#編碼=gbk

f =打開(" c:\\1234.txt "," wb ")

S = "張司abcd1234 "

# -

#在python2.4中,我們可以這樣寫:

# f .寫

#但是python 3.0中拋出了壹個異常。

# -

b = s . encode(“gbk”)

f .寫(b)

f.close()

輸入("?)

讀取該文件的示例:

#編碼=gbk

f = open("c:\\1234.txt "," rb ")

F.seek(0,2) #導航到文件的末尾。

N = f.tell() #讀取文件中的字節數。

重新定位到文件的開頭。

b = f.read( n)

# -

# B是python 2.4中的字符串類型。

#希望python 3.0中的B是字節。

#因此,需要根據指定的編碼方法確認編碼。

# -

s = b.decode("gbk ")

印刷品

# -

#您可以在python 2.4中編寫print s或print s。

#您必須用python 3.0編寫打印件。

# -

f.close()

輸入("?)

運行後,它應該顯示:

張李三司abcd1234

(4)字節序列壹旦形成,其內容是不可改變的,例如:

s="ABCD "

b = s . encode(“gbk”)

打印b[0] #顯示65

b[0] = 66

#執行此語句時出現異常:“bytes”對象不支持項賦值。

八、chr( K)和order(c)

python 2.4.2之前

Chr( K)將代碼K轉換成字符,K的範圍是0 ~ 255。

Ord( c)取單個字符的代碼,返回值範圍從0到255。

python 3.0

Chr( K)將代碼K轉換成字符,K的範圍是0 ~ 65535。

Ord( c)取單個字符的代碼,返回值範圍從0到65535。

九、除法運算符

python 2.4.2之前

10/3結果是3。

python 3.0

10/3的結果是3.30000000005

10 // 3結果是3

X.字節數組對象-新

(1)初始化

a =字節數組(10)

# a是壹個由十個字節組成的數組,數組的每個元素為壹個字節,類型借用了int。

#此時,每個元素的初始值都是0。

(2)字節數組是變量。

a =字節數組(10)

a[0] = 25

#可以用賦值語句更改其元素,但賦值必須在0到255之間。

(3)字節數組的切片仍然是字節數組。

(4)將字符串轉換成字節數組。

#編碼=gbk

S = "妳好"

B = s.encode( "GBK") #首先,字符串按照某種" GBK "編碼方式轉換成字節。

C = bytearray( b) #然後將字節轉換成字節數組。

妳也可以寫

C = bytearray ("Hello "," gbk ")

(5)將字節數組轉換成字符串。

c = bytearray( 4)

c[0]= 65;c[1]= 66;c[2]= 67;c[3]= 68

s = c.decode( "gbk ")

印刷品

#應顯示:ABCD

(6)字節數組可以用來寫文本文件。

#編碼=gbk

f =打開(" c:\\1234.txt "," wb ")

S = "張司abcd1234 "

# -

#在python2.4中,我們可以這樣寫:

# f .寫

#但是python 3.0中拋出了壹個異常。

# -

b = s . encode(“gbk”)

f .寫(b)

C=bytearray("王五"," gbk ")

f .寫(c)

f.close()

輸入("?)