python2与python3有什么区别?
最近有读者在python项目中拿到的项目代码是python2的代码,但是当前做项目基本上都是基于python3做的,所以在给python2的代码增加一些新功能或者做代码功能迭代的时候会经常出现报错。今天我们就来对比说一下,python2与python3两个大版本之间有哪些常见的不同?
第一:维护及版本更新不同
官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新,目前已经更新到了python3.11版本。
第二:两个版本所使用的编码不同
python2使用的是ASCII编码,如果想要支持中文的话,需要更改一下字符集,添加coding:utf-8 ;
python3使用的是utf-8编码,是支持中文的。
第三: 语法上发生变化
1)python3在不等于的写法上去除了<>,全部改用!= ;
2)整型除法运算‘/’python2返回的是整数,python3整型除法返回的是浮点数,python3中除法返回整数使用//(整除);
3)python3中加入了nonlocal声明。使用noclocal x可以声明该函数上部层级中的变量;
4)python3中去除了print语句,使用print()函数替代使用。还有 exec语句也被exec()函数替代;
5)python3中输入函数改变了(读取键盘输入的方法),其实Python2中raw_input()和input( ),两个函数都存在,只不过input()函数只对数字有用;
Python3中对两个函数进行了整合,把raw_input()去掉了,增强input()函数的功能,使其将所有输入当作字符串来处理,并返回字符串类型;
6)python3中加入了关键词as 和with ;
7)python3中增加了f' {} ',格式化,在python2中是没有这个功能的;
第四:数据类型的使用上发生变化
1)python3去除了长整型long类型,只保留整型int
2)python3中str表示字符串序列,byte表示字节序列;python2中Unicode表示字符串序列,str表示字节序列;
3)字典类型下的方法.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃了has_key()用 in替代了它的使用;
第五:异常的捕捉发生变化
1)在Python3中,只有继承自BaseException的对象才可以被抛出,换句话说异常类全部继承自BaseException,python2中各类型对象均可以抛出, 并且异常StandardError 也被Python3废弃,统一使用Exception;
2)捕获异常的语法改变,用 raise Exception(args)代替 raise Exception, args语法,并且引入了as关键字来标识异常实例;
第六:python3引入了抽象基类
python3中引入了Abstraact Base Classes,ABCs抽象基类,并且也因此增加了@abstractmethod和 @abstractproperty两个装饰器,对于编写抽象方法更加方便。
第七:其它变化
1)xrange() 改为range(),如果想用range()创建一个list,需要进行强类型转换。比如:list(range(10));
2) 序列化模块python3中把python2中的cpickle移除,换成pickle模块使用;
3)zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函数都被去除了。python2中的callable(func)函数在python3中可以使用hasattr(func, '__call__');python2中reduce() 在python3中使用functools模块包中的reduce();
4)比较的返回不同,如果x < y的不能比较,抛出TypeError异常。python2版本是返回伪随机布尔值的;
5)file类在pytho3中被废弃,并且python3中只能使用open(....)去打开文件;
第八:市场价值
当前因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,python2基本不兼容。
另一方面,现在很多企业仍保留python2的代码没有进行迭代更新,并且当前很多云服务器上自带安装的是python2(比如阿里云服务器),很多企业为图方便不再安装python3直接使用服务器上的python2进行开发脚本程序。
结语:python2到python3的完全过度还需要一个过程,掌握了解他们才是我们应该做的。(当前python也提供了2to3的脚本可供版本代码转换)
以上就是本次分享的全部内容,想学习更多Python技巧,欢迎持续关注六星源课堂!