1、python2与python3的区别php
python2:html
一、臃肿,源码的重复量比较多。java
二、语法不清晰,其中掺杂了c、php、java等等的一些陋习。python
三、不支持中文,需在程序首行引入‘-*-encoding utf-8 -*-’算法
四、语法:用户交互:raw_input编程
五、print输出时能够不加() 浏览器
六、能够经过参数--enable-unicode=ucs2或--enable-unicode=ucs4指定使用2个字节或4个字节表示一个unicode字符 网络
七、xrange(2.7之后版本添加了range)多线程
八、在继承中经典类与新式类并存编程语言
九、在继承关系的类中深度优先
python3:
一、几乎是重构后的源码,比较优美、清晰、简单。
二、默认支持中文
三、语法:用户交互:input
四、print输出时必须加()
五、默认使用ucs4表示一个unicode字符
六、range
七、在继承中新式类
八、在继承关系中广度优先
2、编程语言的分类
编译型:一次性将全部的程序编译成二进制文件,而后运行。
优势:运行速度快。
缺点:开发效率低,不能跨平台。
解释型:程序运行时逐行解释并运行。
优势:调试代码方便,开发效率高,而且能够跨平台。
缺点:运行速度慢。
3、python的优缺点
优势:
一、python的定位是 "简单" 、"清晰" 、"优美",因此Python程序看上去老是简单易懂,初学者学Python,不但入门容易,并且未来深刻下去,能够编写那些很是很是复杂
的程序。
二、开发效率高,Python有很是强大的第三方库,基本上你想经过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上
再进行开发,大大下降开发周期,避免重复造轮子。
三、高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
四、可移植性————因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工 做在不一样平台上)。若是你当心地避免使用依赖于系统的特性,那么你
的全部Python程序无需修改就几乎能够在市场上全部的系统平台上运行
五、可扩展性————若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中使用它们。
六、可嵌入性————你能够把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
一、速度慢,Python 的运行速度相比C语言确实慢不少,跟JAVA相比也要慢一些,所以这也是不少所谓的大牛不屑于使用Python的主要缘由,但其实这里所指的运行速
度慢在大 多数状况下用户是没法直接感知到的,必须借助测试工具才能体现出来,好比你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10
倍,算是很是夸张了, 可是你是没法直接经过肉眼感知的,由于一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数状况下Python已经彻底可
以知足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种状况下,固然仍是建议你用C去实现的。
二、代码不能加密,由于PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,若是你的项目要求源代码必须是加密的,那你一开始
就不该该用Python来去实现。
三、线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,
使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread,在Windows上为Win thread,彻底由操做系统调度线程的执行。一个
python解释器进程内有一条主线程,以及多条用户程序的执行线程。即便在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行。
因为整个Python语言从规范到解释器都是开源的,因此理论上,只要水平够高,任何人均可以编写Python解释器来执行Python代码(固然难度很大)。事实上,确实存在多种
Python解释器。
4、python的种类
CPython
当咱们从Python官方网站下载并安装好Python 3.6后,咱们就直接得到了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,因此叫CPython。在命令行下运行
python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的全部代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所加强,可是执行Python代码的功能和CPython是彻底同样的。比如不少国产浏览器
虽然外观不一样,但内核其实都是调用了IE。
CPython用>>>
做为提示符,而IPython用In [
序号
]:
做为提示符。
PyPy
PyPy是另外一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),因此能够显著提升Python代码的执行速度。
绝大部分Python代码均可以在PyPy下运行,可是PyPy和CPython有一些是不一样的,这就致使相同的Python代码在两种解释器下执行可能会有不一样的结果。若是你的代码要放到
PyPy下执行,就须要了解PyPy和CPython的不一样点。
Jython
Jython是运行在Java平台上的Python解释器,能够直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython相似,只不过IronPython是运行在微软.Net平台上的Python解释器,能够直接把Python代码编译成.Net的字节码。
小结:
Python的解释器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是经过网络调用来交互,确保各程序之间的独立性。