1. 程式人生 > 其它 >python2和python3的(語法)區別

python2和python3的(語法)區別

python3和python2的(語法)區別:

開始...

print:
	print('hello word')  # 3
	print 'hello word'  # 2

input:
	input('請輸入:')  # python2中的input()函式:獲取當前輸入的內容,並將其作為指令來處理
	input('請輸入:')  # python3中的input()函式:獲取當前輸入的內容,並將其作為字串來處理
	raw_input()  # 就是在python2讓input函式實現python3中相同的功能


整數除法:
	Python 2將小數點後面沒有任何數字的數字視為整數,這可能會導致在除法期間出現意外結果。
		例如,如果在Python 2程式碼中輸入表示式:3/2,則評估結果將為1,而不是你所期望的1.5。
			這是因為Python 2會假設你希望除法的結果為整數,因此它將計算向下舍入到最接近的整數。
			為了獲得結果1.5,你必須編寫3.0 / 2.0來告訴Python,你希望它返回一個浮點數,即在結果中包含小數點後面的數字。
	
	Python 3則會預設將3/2評估為1.5,這對於新程式設計師來說有更直觀的感受。
	

Unicode字串:
	預設情況下,Python 3是將字串儲存為Unicode,
	而如果Python 2要將字串儲存為Unicode,則要求使用“u”標記字串。
	Unicode字串比ASCII字串更通用,它們都是Python 2的預設字串,
	因為它們可以儲存來自外語的字母以及表情符號和標準的羅馬字母和數字。
	
	如果要確保Python 3程式碼與Python 2相容,你仍然可以使用“u”來標記Unicode字串。
	

丟擲異常:
	Python 2和Python 3兩個版本的錯誤處理有一個小的變化。
	在python 3.x中,'as'關鍵字是必需的。例:
	
	python2程式碼:
		try: 

			trying_to_check_error 

		except NameError, err: 

			print err, 'Error Caused'   # 不能在Python 3中工作
	
	python3程式碼:
		try: 

			trying_to_check_error 

		except NameError as err:    # 'as' 是 Python 3.x 必需的存在的關鍵字

			print (err, 'Error Caused')
	

xrange:
	Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一個列表,即range(3)返回[0,1,2],
	而xrange返回一個xrange物件,即xrange(3)返回iterator物件,它與Java迭代器類似,並在需要時生成數字。
	如果我們需要多次迭代相同的序列,我們更喜歡range(),因為range提供了一個靜態列表。xrange()每次重建序列。
	xrange()不支援切片和其他列表方法。xrange()的優點是,當任務迭代大範圍時,它可以節省記憶體。

	在Python 3.x中,範圍函式現在執行xrange在Python 2.x中的功能,因此為了保持程式碼的可移植性,我們可能希望堅持使用範圍。
	所以Python 3.x的範圍函式是來自Python 2.x的xrange。