当前位置: 首页 > news >正文

Python编程学习13条Python2.x和3.x的区别?

0. 去哪里找

这块的内容,你随便使用搜索引擎都可以查到。

但是大家好像都在抄来抄去,内容相差无几。

授人以鱼,不如授人以渔。

在列举之前,我要先教下大家,如何找到那没有经人加工过的第一手资料。

那当然是官网啦

这个地址里,有所有Python历史版本(2.0+)。点击左边,Release Version栏目 对应的版本。

进入对应详情页后,找到如图 what's new in Python xx 就可以查看此版本的新特性。

网页是全英文的,需要你有一定的英文阅读能力。快去感觉一下吧。

接下来。和大家一起过一下,Python2.x和3.x到底有哪些区别,这不仅在你开发过程中需要考虑的,也是面试过程面试官经常会问及的。

2. 编码方式

在Python2.x中,默认使用ASCII编码。

所以默认情况下,我们不能在程序中使用中文。若要使用中文,必须在文件头部,声明使用 "UTF-8" 编码,并在使用的时候注意编码转换,要打印的时候需先转成"Unicode"编码,否则会乱码。

3. 除法运算

Python 2.x中除法运算,整数间运算只保留整数(向下取整)。

4. 异常捕获

在 Python 3 中,只能使用 as 作为关键词。而在Python 2中经常使用 except Exception, e使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。

Python 2.6已经支持这两种语法。

在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。

2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5. xrange

首先,要了解的是,xrange是只有在Python2.x中才有的产物。

Python作为一门不断发展与普及的语言,还在不断更新中。在学习时,建议找一些学习伙伴一起来学习和讨论,效果更佳。如果想学习Python,欢迎加入Python学习交流群(627012464),一起督促,一起学习。里面有开发工具,很多干货和技术资料分享!

6. 用户输入

在2.x 中,有两个函数。raw_input()和input()。

raw_input():将所有输入作为字符串看待,返回字符串类型。

input():只能接收"数字"的输入。

在3.x 中,对这两个函数进行整合,只留下一个input(),既可输入数字,也可输入字符串,返回的是字符串类型。

7. 数据类型

Python 3.x 一个很重要的特性是,对字符串和二进制数据流做了明确的区分。

文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。

Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。

还有一点是,3.X去除了long类型,取代它的是整型(int)。3.x的整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。

8. 函数式编程

在Python中,我们常常使用到的map,filter,reduce,在2.x和3.x中也有所不同。

在2.x中,这三货,是内建函数。返回的是一个列表。

对于 reduce 函数,它在 Python 3.x 中已经不属于 built-in 了,被挪到 functools 模块当中。

9. 协程关键字

在Python3.3后,协程中,新增了yield from 和 async/await 关键字,这在2.x中是没有。

关于yield from的语法剖析,可以前往查看我的另一篇文章。

10. 类的类型

Python2.x 默认使用经典类,只有显示继承object才是新式类。

Python3.x 没有经典类,只有新式类,而且有三种写法

11. 变量作用域

在2.x中无法将局部变量声明为全局变量。

在3.x中可以使用nonlocal语法将局部变量声明为全局变量。

12. 元类的使用

13. 模块变化

去掉了一些模块。由于不常用,这里就不列举了。

新增了一些模块。比如:concurrent.futures,asyncio等

修改了一些模块。比如:Queue改成queue。

大概就是这些内容,可能还有更细微的差别,这些内容要前往官网查看。

但是那些对于我们普通开发者来说,并不那么重要,个人感觉可以不去关注。



喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

  • 【odoo17】odoo前端视图的结构分析及新增视图类型的实现
  • 【从零开始学习计算机科学】操作系统(一)什么是操作系统?操作系统的功能是什么
  • 案例1_1:Proteus点亮8个蓝色LED灯
  • 从头开始开发基于虹软SDK的人脸识别考勤系统(python+RTSP开源)(五)补充剩余内容
  • 邮件发送IP信誉管理:避免封号
  • 用CSS画一条0.5px的线
  • Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案
  • 《算法篇:三数之和问题的两种解法》
  • 修改Flutter项目使用的JAVA版本
  • linux-文本处理命令(echo,cut,sort,uniq,wc,tr,grep)
  • oneinstack 部署 lamp/lnmp
  • MongoDB 自动化部署
  • 搞定python之二----数据类型和程序的控制结构
  • Spring Boot 项目中 `Query` 后缀对象的放置位置
  • 每天五分钟深度学习框架PyTorch:ResNet算法模型完成CAFIR十分类
  • 【Spring IOC/AOP】
  • 怎么用vscode 写 markdown 文档
  • 【社区投稿】深入再谈智能指针、AsRef引用与Borrow借用
  • springboot3 spring security+jwt实现接口权限验证实现
  • Vue动态修改页面的 title 浏览器页签名称
  • Wordpress 反馈表单/trinseo公司
  • 网站建设基本步骤顺序/2022年可以打开的网址
  • 仙桃网站建设公司/抖音seo排名系统哪个好用
  • 太原不错的互联网公司/麒麟seo外推软件
  • 啥十小企业网站建设/百度识图搜索网页版
  • 软件开发工程师招聘简章pdf/高手优化网站