python3和python2的区别是什么

python3和python2的区别在于以下几个方面:1、维护及版本更新不同;2、两个版本所使用的编码不同;3、语法上发生变化等。维护及版本更新不同是指,官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新,目前已经更新到了python3.11版本。

一、维护及版本更新不同

官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新,目前已经更新到了python3.11版本。

二、两个版本所使用的编码不同

python2使用的是ASCII编码,如果想要支持中文的话,需要更改一下字符集,添加coding:utf-8 ;

python3使用的是utf-8编码,是支持中文的。

三、 语法上发生变化

1、python3在不等于的写法上去除了<>,全部改用!= ;

2、整型除法运算‘/’python2返回的是整数,python3整型除法返回的是浮点数,python3中除法返回整数使用//(整除);

3、python3中加入了nonlocal声明。使用noclocal x可以声明该函数上部层级中的变量;

4、python3中去除了print语句,使用print()函数替代使用。还有 exec语句也被exec()函数替代;

5、python3中输入函数改变了(读取键盘输入的方法),其实Python2中raw_input()和input( ),两个函数都存在,只不过input()函数只对数字有用;

Python3中对两个函数进行了整合,把raw_input()去掉了,增强input()函数的功能,使其将所有输入当作字符串来处理,并返回字符串类型;

6、python3中加入了关键词as 和with ;

7、python3中增加了f’ {} ‘,格式化,在python2中是没有这个功能的。

四、数据类型的使用上发生变化

1、python3去除了长整型long类型,只保留整型int

2、python3中str表示字符串序列,byte表示字节序列;python2中Unicode表示字符串序列,str表示字节序列;

3、字典类型下的方法.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃了has_key()用 in替代了它的使用;

五、异常的捕捉发生变化

1、在Python3中,只有继承自BaseException的对象才可以被抛出,换句话说异常类全部继承自BaseException,python2中各类型对象均可以抛出, 并且异常StandardError 也被Python3废弃,统一使用Exception;

2、捕获异常的语法改变,用 raise Exception(args)代替 raise Exception, args语法,并且引入了as关键字来标识异常实例;

六、python3引入了抽象基类

python3中引入了Abstraact Base Classes,ABCs抽象基类,并且也因此增加了@abstractmethod和 @abstractproperty两个装饰器,对于编写抽象方法更加方便。

七、其它变化

1、xrange() 改为range(),如果想用range()创建一个list,需要进行强类型转换。比如:list(range(10));

2、序列化模块python3中把python2中的cpickle移除,换成pickle模块使用;

3、zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函数都被去除了。python2中的callable(func)函数在python3中可以使用hasattr(func, ‘__call__’);python2中reduce() 在python3中使用functools模块包中的reduce();

4、比较的返回不同,如果x < y的不能比较,抛出TypeError异常。python2版本是返回伪随机布尔值的;

5、file类在pytho3中被废弃,并且python3中只能使用open(….)去打开文件;

八、市场价值

当前因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,python2基本不兼容。

另一方面,现在很多企业仍保留python2的代码没有进行迭代更新,并且当前很多云服务器上自带安装的是python2(比如阿里云服务器),很多企业为图方便不再安装python3直接使用服务器上的python2进行开发脚本程序。

延伸阅读

Python优点

1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

2、易学:Python极其容易上手,因为Python有极其简单的说明文档。

3、易读、易维护:风格清晰划一、强制缩进

4、用途广泛

5、速度较快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。

6、免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

7、高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

8、可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。

9、解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。

运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。

在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

10、面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools,itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。

11、可扩展性、可扩充性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004年,Python已在Google内部使用,Google 召募许多 Python 高手,但在这之前就已决定使用Python,他们的目的是 Python where we can,C++ where we must,在操控硬件的场合使用C++,在快速开发时候使用Python。”

12、可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

13、丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

14、规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。Python的作者设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定(而C语言是用一对大括号“{}”(不含引号)来明确的定出模块的边界,与字符的位置毫无关系)。通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

15、高级动态编程:虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。

16、做科学计算优点多:说起科学计算,首先会被提到的可能是MATLAB。除了MATLAB的一些专业性很强的工具箱还无法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:

  • 首先,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
  • 其次,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。
  • 最后,MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。

文章标题:python3和python2的区别是什么,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/47116

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年3月18日 上午11:48
下一篇 2023年3月18日 下午12:10

相关推荐

  • Java 中 BIO、NIO、AIO 有什么区别

    区别是:BIO是同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。NIO是一种同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,对应 java.nio 包,提供了 Channel , Selector,Buffer等抽象。AIO 也就是 NIO 2。在 Java 7 中…

    2023年2月14日
    57700
  • UniApp中结合MQTT和RTC实现多媒体通信的方法

    结合MQTT和RTC在UniApp中实现多媒体通信的方法涉及到消息传递与实时音视频交互的技术融合。1、采用MQTT(Message Queuing Telemetry Transport)协议负责轻量级的消息订阅与分发,以支持设备间的实时通信;2、利用RTC(Real-Time Communicat…

    2023年12月25日
    31000
  • ppp项目如何管理

    PPP项目管理的关键在于明确项目的目标、构建强大的合作伙伴关系、确保项目的财务可行性、通过细致的计划和效率的执行来降低风险、以及确保项目的可持续发展。构建强大的合作伙伴关系尤为重要,因为它涉及到各个参与方的利益协调,需要在合同协议中明确各方职责、风险分配以及利益共享机制等,这是保证项目顺利进行的基础…

    2024年4月10日
    5600
  • devops什么时候上课

    ### DEVOPS何时启动学习之旅? 针对“DEVOPS何时启动学习之旅?”这一提问,存在几个关键考量因素,直接影响着DEVOPS学习时机的抉择。1、当前技术背景与知识储备,着重掌握基本的软件开发与运维知识是初始阶段的必要条件;2、学习目标和动机,这包括但不限于提升职业技能、求职、或对DEVOPS…

    2024年3月26日
    8300
  • 项目管理常用工具和方法有哪些

    项目管理常用的工具和方法有:1.项目分析-SWOT分析法;2.项目过程管理-PDCA循环模型;3.项目决策规划-6W2H;4.项目目标管理-SMART原则等;5.项目时间管理-四象限法则;6.项目任务分解-WBS;7.资源管理-二八原则等。除此以外,项目管理常用软件包括:软件项目管理平台-PingC…

    2023年4月11日
    1.6K00
  • 产品经理该如何收集用户需求

    产品经理该收集用户需求可以通过以下办法:1、市场与用户调研;2、竞品分析;3、用户访谈;4、实地研究;5组内头脑风暴;6、问卷调查。市场调研可以通过查看各个调研机构出的各类报告来了解市场状况,再把市场和用户结合起来查询针对性的调研报告。 1、市场用户调研 市场调研可以通过查看各个调研机构出的各类报告…

    2023年1月4日
    65300
  • app一般的开发流程是什么

    app一般的开发流程是:1、需求收集与分析;2、原型设计;3、UI设计;4、开发;5、发布和推广;6、运营和维护。需求收集与分析通常是由产品经理或项目经理来负责,他们需要和客户或用户沟通,了解具体的需求和目标。 第一步:需求收集与分析 在开始任何一个项目之前,首先需要进行需求收集与分析。这一步骤是非…

    2023年3月3日
    24000
  • 堆和栈的区别

    堆和栈的区别有:1、存储内容不同;2、管理方式上不同;3、空间大小不同;4、能否产生碎片不同;5、生长方向不同;6、分配方式不同;7、分配效率不同。在函数调用时,栈中存放的是函数中各个参数,堆一般是在堆的头部用一个字节存放堆的大小。 1、存储内容不同 栈:在函数调用时,栈中存放的是函数中(底下是函数…

    2023年1月31日
    42900
  • 德立oa系统

    标题:德立OA系统的综合分析 摘要:德立OA系统是一个面向现代企业的办公自动化解决方案,视为提高公司效率的重要工具。功能齐全、使用便捷、安全稳定是它的三大核心优势。在这些利益中,功能齐全表现在工作流程的自动化、项目管理、文档管理、通讯录服务和移动办公等多个方面。该系统能够让公司管理层和员工更高效地处…

    2024年1月12日
    24900
  • 有哪些防止反编译Java类库jar文件的办法

    防止反编译Java类库jar文件的办法有:1、隔离Java程序;2、对Class文件进行加密;3、转换成本地代码;4、代码混淆。隔离Java程序是最简单的方法,让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。 1、隔离Java程序 最简单的方法就是让用户不能够…

    2023年2月7日
    1.2K00

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部