Python2.x和Python3.x區別__Python

來源:互聯網
上載者:User

      最近總是遇到一些煩心的事情,比如用Python3.5來寫一些代碼,有些不太懂的地方,就去網上找答案,卻發現很多都是基於python2.x的。


今天我就來說點遇到的一些問題。


Unicode 字串
       在Python2中,一般字元串是以8位ASCII碼進行儲存的,而Unicode字串則儲存為16位unicode字串,這樣能夠表示更多的字元集。使用的文法是在字串前面加上首碼 u。
       在Python3中,所有的字串都是Unicode字串。

urllib

       urllib是Python內建的一個擷取網路資料的庫,在Python 2中常用的擷取網路資料的方法是urllib.urlopen(),而在Python 3中,該方法不再存在,其中urllib.urlopen()在Python 3中的等價表達是urllib.request.urlopen()。


       Py2裡面輸入用raw_input()
       Py3裡面輸入用input()


       python3裡面input預設接收到的是str類型
       python2裡面卻認為是int類型


num = input("Please input a number:")
Please input a number:45
type(num)
Out[54]: str


以下是一些常見的不同:

0x00:
filter(),遇到類似<filter object at 0x000001E2CE37F390>問題

在3.x中filter 函數返回的對象從列表改為 filter object(迭代器),要想返回一個列表可以添加list(),另外也支援迭代操作,如for迴圈。


0x01:
range(),在3.x中filter 函數返回的對象是range object,如截圖加list()即可解決。



0x02:
map() ,遇到類似<map at 0x1e2ce323160>。
這是因為在python3裡面,map()的傳回值已經不再是list,而是iterators 。
只需將iterator 轉換成list 即可, 比如 list(map())。



0x03:
reduce(),遇到NameError: name 'reduce' is not defined問題。
因為在進入python 3.x以後, reduce已經不在built-in function裡了。
只需:from functools import reduce



Python 2.7的整數除法運算結果仍是整數,Python 3.x已經改進了整數的除法運算,“/”除將得到浮點數,“//”除才仍是整數。


在python2.x中,dict.keys()返回一個列表,在python3.x中,dict.keys()返回一個dict_keys對象,比起列表,這個對象的行為更像是set,所以不支援索引的。解決方案:list(dict.keys())[index]


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.