【Python--Python2.x与Python3.x的区别】

🚀 作者 :“码上有前”
🚀 文章简介 :Python
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
请添加图片描述

往期内容

【Python–vscode常用快捷键,必收藏!】
【Python–代码规范 】
【Python --优雅代码写法】
【Python–Python2.x与Python3.x的区别】
【Python–Web应用框架大比较】
【Python—内置函数】
【Python—六大数据结构】
【python–迭代生成器闭包面向对象继承多态】
【Python–定时任务的四种方法】
【Python–迭代器和生成器的区别】
【Python–读写模式全解】
【Python–高级教程】
【Python–网络编程之DHCP服务器】
【Python–网络编程之Ping命令的实现】
【Python–网络编程之TCP三次握手】

🍉前言

	🍉Python 的 3​​.0 版本,。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
	Python 3.0 在设计的时候**没有考虑向下相容**。许多针对早期 Python 版本设计的程式都无法在 Python 3.0 上正常执行。
为了照顾现有程式,**Python 2.6 作为一个过渡版本**,基本使用了 Python 2.x 的语法和库,
同时考虑了向 Python 3.0 的迁移,允许使用部分 Python 3.0 的语法与函数。
	新的 Python 程式建议使用 Python 3.0 版本的语法。除非执行环境无法安装 Python 3.0 或者程式本身使用了不支援 Python 3.0 的第三方库。
	目前不支持 Python 3.0 的第三方库有 Twisted, py2exe, PIL等。
大多数第三方库都正在努力地相容 Python 3.0 版本。即使无法立即使用 Python 3.0,也建议编写相容 Python 3.0 版本的程式,
然后使用 Python 2.6, Python 2.7 来执行。Python 3.0 的变化主要在以下几个方面:

1.print 函数和exec函数

print 语句没有了,取而代之的是 print() 函数。
这点不明显,代码格式化工具会帮我们进行代码格式化,因此我们可能观察不大是不是有个空格(其实没有)
没有括号还挺明显

# py2
# print "fish" #直接报错
print("fish")  # 注意print后面有个空格
print("fish")  # print()不能带有任何其它参数
# py3
print([1, 2, 3])

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。与上类似,exec()函数用于执行字符串python代码

2.Unicode

py2py3
有 ASCII str() 类型,unicode() 是单独的有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。
不支持Python3.x 源码文件默认使用 utf-8 编码
# 由于 Python3.x 源码文件默认使用 utf-8 编码,所以使用中文就更加方便了
# 使用中文变量名
中国 = 'china'
print(中国)

3.除法运算与不等运算符

除法

Python 中的除法较其它语言显得非常高端,有套很复杂的规则。Python 中的除法有两个运算符,/ 和 //

py2py3
与 Java 和 C ,整数相除是一个整数,把小数部分忽略掉,浮点数除法得到一个浮点数/ 对于整数之间的相除,结果也会是浮点数。
# 除法有两种,相比于其他语言就显得高级
# 除法运算
# py2
print(1/2) # 0 整数相除还是整数,即使是小数也会取整数部分
print(1.0/2.0) # 0.5
#对于//
print(-1//2) # -1 得-1

#py3
print(1/2) # 0.5 就不是整数了 而是浮点数
print(-1//2) # -1
# 并不是舍弃小数部分,而是执行 floor 操作,
# 如果要截取整数部分,那么需要使用 math 模块的 trunc 函数

不等运算符

py2py3
两种写法 != 和 <>去掉了<>, 只有!=一种写法,

去除了repr表达式··

py2py3
反引号``相当于repr函数的作用去掉了``这种写法,只允许使用repr函数
应用场景不过我感觉用repr的机会很少,一般只在debug的时候才用,多数时候还是用str函数来用字符串描述对象。

4.异常

py2py3
捕获异常的语法由 except exc, varexcept exc as var。新增as作为关键字
在 2.x 时代,所有类型的对象都是可以被直接抛出的在 3.x 时代,只有继承自BaseException的对象才可以被抛出
2.x raise 语句使用逗号将抛出对象类型和参数分开3.x 取消了这种奇葩的写法,直接调用构造函数抛出对象即可。
在 2.x 时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情在 3.x 中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5.xrange

在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。这个表现十分像生成器(比如。“惰性求值”)
问题:但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。
由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。
py3 :range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。

6.八进制字面量表示

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。
新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。
在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000。

7.多个模块被更改删除更名(根据PEP8)

更名

py2旧的名字py3新的名字
_winregwinreg
ConfigParserconfigparser
copy_regcopyreg
Queuequeue
SocketServersocketserver
reprreprlib

合并
StringIO模块现在被合并到新的io模组内。httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

删除
new, md5, gopherlib等模块被删除

加粗样式

8.数据类型

py2py3
有long类型Py3.X去除了long类型,现在只有一种整型——int
八位串新增了bytes类型,对应于2.X版本的八位串
而之前的iterkeys()等函数都被废弃。dict的.keys()、.items 和.values()方法返回迭代器
同时去掉的还有 dict.has_key()用 in替代它
在python2.x中raw_input()和input( ),两个函数都存在, raw_input()—将所有输入作为字符串看待,返回字符串类型input()-----只能接收"数字"的输入,在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float )在python3.x中raw_input()和input( )进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。

9.打开文件与input输出

py2py3
file( … )或 open(…)open(…)
raw_input( “提示信息” )input( “提示信息” )

10.map、filter 和 reduce

py2py3
map 和 filter,看到它们两者的类型是 built-in function(内置函数)从函数变成了类,其次,它们的返回结果也从当初的列表成了一个可迭代的对象, 我们尝试用 next 函数来进行手工迭代
对于比较高端的 reduce 函数,属于 built-in 了挪到 functools 模块当中

🍉 学无止境,都看到这了,点个赞关注支持一下呗!嘿嘿(* ̄︶ ̄)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上有前

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值