91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python2與Python3的區別是什么

發布時間:2021-02-03 15:28:28 來源:億速云 閱讀:171 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python2與Python3的區別是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:

Python的3??.0版本相對于Python的早期版本,這是一個較大的升級。為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。新的Python程式建議使用Python 3.0版本的語法。越來越多的庫要放棄Python 2了,大多數第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7來執行。本片博文就是講述一下Python2.x與3??.x版本區別。

一、print函數

Python 2中print是語句(statement),Python 3中print則變成了函數。在Python 3中調用print需要加上括號,不加括號會報SyntaxError。Python 2.6與Python 2.7部分地支持這種形式的print語法。在Python 2.6與Python 2.7里面,以下三種形式是等價的:

print "123"
print ("123") #注意print后面有個空格
print("123") #print()不能帶有任何其它參數
# 然而,Python 2.6實際已經支持新的print()語法:
from __future__ import print_function
print("123", "456", sep=', ')

二、Unicode

Python 2有兩種字符串類型:str和unicode,Python 3中的字符串默認就是Unicode,Python 3中的str相當于Python 2中的unicode。在Python 2中,如果代碼中包含非英文字符,需要在代碼文件的最開始聲明編碼,如下:

# -*- coding: utf-8 -*-

由于 Python3.X 源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:

>>> 你好 = 'hello'
>>>print(你好)
hello

Python 2.x:

>>> str = "我愛北京天安門"
>>> str
'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> str = u"我愛北京天安門"
>>> str
u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'

Python 3.x:

>>> str = "我愛北京天安門"
>>> str
'我愛北京天安門'

三、除法運算

Python中的除法較其它語言顯得非常高端,有套很復雜的規則。Python中的除法有兩個運算符,/和//。

首先來說/除法:在python 2.x中/除法就跟我們熟悉的大多數語言,比如Java啊C啊差不多,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。在python 3.x中/除法不再這么做了,對于整數之間的相除,結果也會是浮點數。

Python 2.x:

>>> 1 / 2
0
>>> 1.0 / 2.0
0.5

Python 3.x:

>>> 1/2
0.5

而對于//除法,這種除法叫做floor除法,會對除法的結果自動進行一個floor操作,在python 2.x和python 3.x中是一致的。

Python 2.x/Python 3.x相同:

>>> -1 // 2
-1

四、異常處理

在 Python 3 中處理異常也輕微的改變了,在 Python 3 中我們現在使用 as 作為關鍵詞。捕獲異常的語法由 except exc, var 改為 except exc as var。使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。

Python 2.x:

try:
  1/0
except ZeroDivisionError, e:
  print str(e)

Python 3.x(此種方式python 2.x也可用,python 3.x必須帶as):

try:
  1/0
except ZeroDivisionError as e:
  print str(e)

五、xrange

在 Python 2 中 xrange() 創建迭代對象的用法是非常流行的。比如: for 循環或者是列表/集合/字典推導式。這個表現十分像生成器(比如。"惰性求值")。但是這個 xrange-iterable 是無窮的,意味著你可以無限遍歷。由于它的惰性求值,如果你不得僅僅不遍歷它一次,xrange() 函數 比 range() 更快(比如 for 循環)。盡管如此,對比迭代一次,不建議你重復迭代多次,因為生成器每次都從頭開始。在 Python 3 中,range() 是像 xrange() 那樣實現以至于一個專門的 xrange() 函數都不再存在(在 Python 3 中 xrange() 會拋出命名異常)。

簡單來說就是:Python 2中有 range 和 xrange 兩個方法。其區別在于,range返回一個list,在被調用的時候即返回整個序列;xrange返回一個iterator,在每次循環中生成序列的下一個數字。Python 3中不再支持 xrange 方法,Python 3中的 range 方法就相當于 Python 2中的 xrange 方法。

六、map、filter 和 reduce

這三個函數號稱是函數式編程的代表。在 Python3.x 和 Python2.x 中也有了很大的差異。首先我們先簡單的在 Python2.x 的交互下輸入 map 和 filter,看到它們兩者的類型是 built-in function(內置函數):

>>> map
<built-in function map>
>>> filter
<built-in function filter>
>>>

但是在Python 3.x中它們卻不是這個樣子了:

>>> map
<class 'map'>
>>> map(print,[1,2,3])
<map object at 0x10d8bd400>
>>> filter
<class 'filter'>
>>> filter(lambda x:x % 2 == 0, range(10))
<filter object at 0x10d8bd3c8>
>>>

首先它們從函數變成了類,其次,它們的返回結果也從當初的列表成了一個可迭代的對象, 我們嘗試用 next 函數來進行手工迭代,對于比較高端的 reduce 函數,它在 Python 3.x 中已經不屬于 built-in 了,被挪到 functools 模塊當中。

七、raw_input()和input()

在python2.x中raw_input()和input( ),兩個函數都存在,其中區別為:

raw_input()---將所有輸入作為字符串看待,返回字符串類型

input()---只能接收"數字"的輸入,在對待純數字輸入時具有自己的特性,它返回所輸入的數字的類型(int, float )

在python3.x中raw_input()input( )進行了整合,去除了raw_input(),僅保留了input()函數,其接收任意任性輸入,將所有輸入默認為字符串處理,并返回字符串類型。

八、數據類型

1. Python3.x去除了long類型,現在只有一種整型——int,但它的行為就像Python2.x版本的long

2. 新增了bytes類型,對應于2.X版本的八位串,定義一個bytes字面量的方法如下:

>>> b = b'china'
>>> type(b)
<type 'bytes'>
str對象和bytes對象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互轉化。
>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'

3. dict的.keys().items.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),用 in替代它吧 。

關于“Python2與Python3的區別是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临汾市| 宁河县| 祁东县| 丘北县| 朔州市| 库尔勒市| 诏安县| 巴林左旗| 阿克| 缙云县| 白水县| 潍坊市| 大田县| 普兰县| 历史| 抚州市| 揭阳市| 澄城县| 高雄县| 隆尧县| 林州市| 临沂市| 南丰县| 江西省| 金山区| 南开区| 尼玛县| 永寿县| 连平县| 都昌县| 都安| 湟源县| 阆中市| 宁波市| 台湾省| 来宾市| 庄河市| 宝鸡市| 临海市| 田阳县| 永登县|