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 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:05月03日

热门专题

国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
安徽中源管业有限公司|安徽中源管业有限公司,安徽中源管业有限公司介绍,安徽中源管业有限公司电话,安徽中源管业有限公司地址,安徽中源管业有限公司厂家,安徽中源管业有限公司电力管,安徽中源管业有限公司管材
安徽中源管业有限公司
大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部