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

这篇具有很好参考价值的文章主要介绍了【Python2.x与Python3.x的区别】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍉前言

	🍉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

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

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

除法

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

py2 py3
与 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 函数

不等运算符

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

去除了repr表达式··

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

4.异常

py2 py3
捕获异常的语法由 except exc, var except 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新的名字
_winreg winreg
ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
repr reprlib

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

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

加粗样式

8.数据类型

py2 py3
有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输出

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

10.map、filter 和 reduce

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

🍉 学无止境,都看到这了,点个赞关注支持一下呗!嘿嘿(* ̄︶ ̄)文章来源地址https://www.toymoban.com/news/detail-432485.html

到了这里,关于【Python2.x与Python3.x的区别】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python2.7 中 print()函数的使用及input()、与raw_input()的区别

    一、python2.7 中 print()函数的使用: 直接输出双引号或单引号内的任何字符或数字 输出变量的值,不用加双引号或单引号,直接在()内写变量名称即可,或者print后面空格直接写变量名称 同时输出多项内容,不同内容用逗号隔开,不同内容包括双引号或单引号内的内容、

    2023年04月25日
    浏览(27)
  • Linux-安装Python2.7

            正常情况下,使用sudo apt install python来安装就好了。如果发现这个指令报错了,此时就需要手动安装Python2.7了。例如报错如下:         下载地址如下:Python Release Python 2.7.18 | Python.org         点击Gzipped source tarball下载         1).解压         如果未安装,可以通

    2024年02月05日
    浏览(33)
  • notepad++配置python2环境

    (1)python2版本下载: Index of /ftp/python/2.7.8/ https://www.python.org/ftp/python/2.7.8/ (2) 配置notepad++环境          1.打开Notepad++,点击“插件”-“插件管理器”,在“可用”选项卡中,找到并选中“PythonScript”插件,点击“安装”按钮安装,安装完成后需重启Notepad++;        

    2024年02月07日
    浏览(38)
  • window安裝python2.7.0

    https://www.python.org/downloads/release/python-270/ 选中所有用户,然后点击next 切换安装位置,最好不要选择c盘 点击next 等待安装 安装完成 将 python 安装路径添加到系统环境变量 将python系统环境变量移至最顶部即可解决

    2024年02月12日
    浏览(33)
  • Python2.7安装包错误解决

    1.环境 CentOS 7 Python 2.7.5 pip 20.3.4 2.错误描述 在安装库时出现报错 Command \\\"python setup.py egg_info\\\" failed with error code 1 ,如下图所示。 原因 : setuptools 版本太低导致。 3.解决方法 安装高版本的 setuptools ,命令如下。 参考博客 : https://blog.csdn.net/Happy_Sunshine_Boy/article/details/99619966 ​ ht

    2024年02月13日
    浏览(36)
  • Python2安装pip的方法

    快速链接: . 👉👉👉 [专栏目录]-环境搭建安装问题笔记目录 👈👈👈 付费专栏-付费课程 【购买须知】: 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 install pip for python 2 curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py python2 get-pip.py sudo apt-get install python-dev # for pyt

    2024年02月16日
    浏览(37)
  • 离线安装python2的MySQLdb

    环境: centos7.9 pytthon2.7.5 下载MySQLdb模块地址 直接安装报错如下 解决报错需要安装python-devel mysql-devel 找个相同的环境下载这两个的rpm离线包 配置阿里yum源 再次回到MySQL-python-1.2.5目录下 可以看到不报错了,接着安装模块 六级标题

    2024年01月19日
    浏览(38)
  • Python2 快速搭建一个 HTTP 服务

    Python2 快速搭建一个 HTTP 服务 nohup python -m SimpleHTTPServer 8000 t1.log 21 由于防火墙是开着的,所以放行8000端口咯 关于防火墙相关知识点,详情请看下边这篇文章 防火墙知识点大补 当然了,自己做实验玩的话,安全要求不高,阔以直接关掉防火墙(简单) 浏览器访问机器 IP:800

    2024年02月12日
    浏览(31)
  • python2.7.18绿色安装包制作

    0.前言:当前,python主流版本是3.x.x,但有时候需要用到python2.7.x 1.从官网下载python2.7.18安装包 下载地址:https://www.python.org/downloads/windows/ 2.安装python2.7.18(默认安装:C:Python27) 3.将C:WindowsSystem32python27.dll文件拷贝至C:Python27 4.将Python27目录打包至新的设备 5.注意事项: (

    2024年02月14日
    浏览(24)
  • 一周学会python2-IDE

    与库和框架的简单集成 集成面向对象设计 语法高亮 代码自动完成 版本控制 除了这些功能,集成开发环境还能为开发人员提供高级调试功能。 PyCharm是由软件工具开发领域的先驱JetBrains开发的仅用于Python的集成开发环境。最初,JetBrains团队创建PyCharm是为了管理其他编程语言

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包