Python3常見問題和解決方案(Python2 和 Python3的區(qū)別)[持續(xù)更新]

1. configparser

try:
    import configparser as ConfigParser # py3
except:
    import ConfigParser # py2

configparser
— Configuration file parser
簡(jiǎn)介:提供了解決方法。

2. thread

try:
    import thread  # py2
except:
    import _thread as thread # py3

3. hashlib

# py2
m = hashlib.md5(data)


# py3
m = hashlib.md5(data.encode("utf8"))

4. 開啟一個(gè)簡(jiǎn)單的web server(單行服務(wù)器):

# py2
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

# py3
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...

5. base64.b64encode

#py2
base64.b64encode(feed_back)

#py3
base64.b64encode(feed_back.encode('utf-8'))


#py2
base64.encodestring(feed_back)

#py3
base64.encodestring(feed_back.encode('utf-8'))

6.long 類型

Py3.X去除了long類型,現(xiàn)在只有一種整型——int,但它的行為就像2.X版本的long 
# py2
>>> long(1468984980.116425)
1468984980L
#py3
>>> int(1468984980.116425)
1468984980

7. iterterms()

在python2中,同時(shí)提供iterxxxx和xxxx方法。比如iteritems, items. 在python3 中不出現(xiàn)iterxxx. 默認(rèn)都是生成器。

# py2
>>> a = {'a':'jia','b':'luo'}
>>> dir(a)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
>>> for i in a.iteritems():
...     print i
...
('a', 'jia')
('b', 'luo')

#py3
>>> a = {'a':'jia','b':'luo'}
>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>> a.items()
dict_items([('a', 'jia'), ('b', 'luo')])
>>> for i in a.items():
...     print(i)
...
('a', 'jia')
('b', 'luo')

8. queue

try:
    from Queue import PriorityQueue # py2
except:
    from queue import PriorityQueue # py3

9. raise

# py2
try:
    del self[key]
except KeyError, k:
    raise AttributeError, k

# py3
try:
    del self[key]
except KeyError as k:
    raise AttributeError(k) 

10. exceptions

# py2
>>> from exceptions import UnicodeEncodeError
# py3
移除了 exceptions模塊。

11. reload

# py2
import sys
from imp import reload
reload(sys)
# py3
import sys
from imp import reload
reload(sys)

12. sys.setdefaultencoding("utf-8")

# py2
import sys
sys.setdefaultencoding("utf-8")
# py3
取消了setdefaultencoding()

[轉(zhuǎn)]python3中reload()
簡(jiǎn)介:
Python 3.0把reload內(nèi)置函數(shù)移到了imp標(biāo)準(zhǔn)庫模塊中。它仍然像以前一樣重載文件,但是,必須導(dǎo)入它才能使用

13. urllib&urllib2

#py2
>>> import urllib
>>> urllib.urlencode({'a':'jia','b':'xiao','c':'lei'})
'c=lei&a=jia&b=xiao'

#py3
>>> import urllib
>>> urllib.parse.urlencode({'a':'jia','b':'xiao','c':'lei'})
'c=lei&a=jia&b=xiao'

#py2
import urllib2
request = urllib2.Request(url)
opener = urllib2.urlopen(request)
except urllib2.HTTPError as msg:
except urllib2.URLError as msg:
# python2 中的urllib2, 在Python3中已經(jīng)并入urllib.

#py3
import urllib.request
request = urllib.request.Request(url)
opener = urllib.request.urlopen(request)
except urllib.error.HTTPError as msg:
except urllib.error.URLError as msg:

14.url

try:
    from urlparse import urlparse # py2
except:
    from urllib.parse import urlparse # py3

py3中,很多模塊集中到了urllib 中。

15.DES

# py2
from des import DES

Python3.x和Python2.x的區(qū)別
http://my.oschina.net/lenglingx/blog/205626
簡(jiǎn)介:
介紹還是很充分的。

讓python同時(shí)兼容python2和python3的8個(gè)技巧分享
http://www.jb51.net/article/52075.htm
簡(jiǎn)介:
一些擴(kuò)展也很有意思。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號(hào) 簡(jiǎn)介有稍微接觸python的人就會(huì)知道,python中...
    ayuLiao閱讀 3,152評(píng)論 1 5
  • 原文: https://wiki.python.org/moin/Python2orPython3 在項(xiàng)目開發(fā)中,...
    林灣村龍貓閱讀 4,079評(píng)論 0 6
  • 不要把理想理想化,這是今天聽到的比較有趣的可以深思的一句話。 感覺自己近年的很多行為都可以用這一句話來概括。 初中...
    郭云閱讀 181評(píng)論 1 1
  • 我一直認(rèn)為,“法律”與各種司法機(jī)構(gòu),它存在之初是廣大人民為了維護(hù)他們的情感利益而授權(quán)創(chuàng)建的相關(guān)條文與機(jī)構(gòu)。也就是說...
    最愛Kevin的小歡歡閱讀 909評(píng)論 1 1