Python3避坑指南,Python2 与 Python3 的差异梳理

 

 

预计 Python 2 到 2020 年 4 月 12 日就不再维护了,Python 2 将停止所有的更新,包括安全性更新。

编码

Python 2 中,默认编码是 asscii,asscii编码是应用于拉丁字母的编码系统,程序内用中文常导致出现编码问题。在Python 3 中采用了 UTF-8 作为默认编码,UTF-8属于unicode编码,支持大多数语言,且可变长度,空间较为节省。在Python 3 中写代码再不用声明# -*- coding: utf-8 -*-

在Python3 中以下代码是合法的,但最好不要这样写,还是让代码看起来规范一些好。

 


print 函数

print 语句被 Python3 废弃,统一使用 print 函数,意味着在Python 3中必须使用括号将需要输出对象括起来。

Python 2.6+版本部分地支持这种形式的print语法。在Python 2.6+版本中,如下三种形式是等价的。

 

但在Python 3中以Python 2的形式不带括号使用print函数时,会触发SyntaxError,如下。

 


除法运算

在 Python 2 中若为两个整形数进行除法运算,结果为整数,把小数部分完全忽略掉,但若两个数中有一个为浮点数,则结果为浮点数,如下。

 

在 Python 3 中为真除法,运算结果不受参加运算的数的类型影响,都是浮点数,如下。

 


不等运算符

Python 2中不等于有两种写法 != 和 <>,如下。

 

Python 3中删除了<>,只有!=一种写法,如下。

 


round

Python 2,round 函数返回 float 类型值,如下。

 

Python 3,round 函数返回 int 类型值,如下。

 


xrange

xrange 函数被 Python 3 废弃,统一使用 range,Python 3 中 range 的机制也进行修改并提高了大数据集生成效率,如下。

 

在Python 3 中,使用 xrange 抛出NameError异常,如下,如下。

 

同时Python 3 中range函数返回的是可迭代对象,可以通过list()函数转成列表。


file()

file 函数被 Python 3 废弃,统一使用 open 来处理文件,可以通过 io.IOBase 检查文件类型,如下。

 

Python 3 中使用file 函数抛出NameError异常,如下。

 


has_key()

字典变量的 has_key 函数被 Python 3废弃,统一使用 in 关键词,如下。

 

Python 3 中使用has_key 抛AttributeError异常,使用in关键字代替,如下。

 

同时,在Python 3 中字典的keys()、values()、items() 不再返回列表,但是可以通过 list 强行转换,如下。

 


函数式编程map、filter

在 Python 2中 map、filter 返回的是列表,如下。

 

在 Python 3中 map、filter 返回的迭代器,但可以通过list转换成列表,如下。

 

同时迭代器 iterator 的 .next()函数被 Python 3 废弃,统一使用 next(iterator)。


For循环变量与全局命名空间泄漏

在Python 2中,for 循环会修改外部相同名称变量的值,如下。

 

在Python 3中,for循环中的变量不再会泄漏到全局命名空间中了,如下。

 


异常处理

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。捕获异常的语法由 except exc, var 改为 except exc as var,如下。

 


经典类

Python 2 中存在经典类和新式类,Python 2中,默认都是经典类,只有显式继承了object才是新式类,在Python 3中取消了经典类,默认都是新式类,并且不必显式的继承object。

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:03月05日

热门专题

云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招
弥勒综合高中|弥勒综合高中
弥勒综合高中
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部