同福

Python2和Python3的差异区别汇总【20210613】

介绍

介绍

Python2和Python3区别真是太大了,从py2转导py3后会发现各种不适应,有的时候甚至想直接转会py2得了!

今天覆盖就开一个文章专门把py2和py3的区别和错误整理出来,分享给大家!我们共同进步吧!

字符串

错误1

现象

在使用运算符处理多个变量的时候可能会得到如下的错误信息:

a bytes-like object is required, not 'str'

原因

因为在py3里面普通字符串和二进制字符串是不能直接进行运算的,所以如果遇到这个问题或者把普通字符串变成二进制字符串:

b"福哥真是厉害啊~~"

或者把二进制字符串变成普通字符串:

bstr.encode("utf-8")

错误2

现象

在使用正则表达式对字符串进行匹配的时候可能会得到如下的错误信息:

cannot use a string pattern on a bytes-like object

原因

因为在py3里面string和bytes是不能自动转换的,而re.findall需要传入的是字符串,我们只能手动转成string再传入。

str.decode("utf-8")

urlencode

py2

在py2里面urlencode在urllib库里面。

import urllib

urllib.urlencode(params)

py3

在py3里面urlencode在urllib.parse库里面。

import urllib

urllib.parse.urllib(params)

在py3里面增加了quote方法用来对字符串进行URL编码。

import urllib

urllib.parse.quote(param)

创建多级目录

py2

在py2里面创建多级目录是使用os.mkdirs方法。

import os

os.mkdirs(multiLevelPath)

py3

在py3里面创建多级目录是是os.makedirs方法,就是mk变成了make了。

import os

os.makedirs(multiLevelPath)

总结

Python2和Python3的差别是非常大的,在Python2彻底退出历史舞台之前,福哥都会不断地更新这个差异区别汇总。

大家也可以把它收藏了用以备用,福哥会不定时更新,敬请期待~~