Python 3.5 和 2.7区别

来源:互联网 发布:ant design 知乎 编辑:程序博客网 时间:2024/06/05 15:26

1.     Pickle 区别

在Python 2.7 中,将Dict对象存储序列化,然后可以自由的发序列化,具体代码大致如下:


但是在Python 3.5 调用上述代码时会报如下错误:


这是应为2.7pickle.load函数读取时默认为bytes读取,而3.5读取时默认为ASCII码读取,官网说明如下:


所以只需要将调用时的读取格式改为bytes即可

wind = pickle.load(pkl_file,encoding='bytes')

2.     URL访问不同

在Python2.7 中,申请一个URL请求代码如下:

importurllib2 
req = urllib2.Request('http://www.baidu.com') 
response = urllib2.urlopen(req) 

而在3.5中使用request代替,代码如下:

from urllibimportrequest

req = request.Request(req_url)

f= request.urlopen(req)

而且有一个更加便捷的访问方式,可以避免没有及时关闭的链接,代码如下:

from urllib import request
 
with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
    data = f.read()
    print('Status:', f.status, f.reason)
    for k, v in f.getheaders():
        print('%s: %s' % (k, v))
    print('Data:', data.decode('utf-8'))

用with as :的方式访问,当页面访问结束时可以自动关闭链接

1 0
原创粉丝点击