输入机构/课程/服务名称

不同的Python实现方式的区别

2021-12-07 10:50:18
# IT技术培训 # 软件开发 # Python

不同的Python实现方式之间是有区别的。Python从2017年开始受到关注和追捧,它与高科技人工智能有关,但python是什么?python能做什么?似乎是*热门的话题。这里我先解释一下:


python是什么:其实python是一种面向对象的解释性计算机编程语言,拥有丰富而强大的库。该语言因其简单性、可读性和可扩展性而广受欢迎。


python能做什么:python可以用于图形处理、数学处理、文本处理、数据库编程、网络编程、Web编程、多媒体应用、pymo引擎、黑客编程、用Python写简单爬虫、人工智能等等。


所以我们说Python的时候,一般指的是CPPython。但Python其实是一种语言规范,它只定义了Python应该具备什么语言元素,应该完成什么任务。这个语言规范可以用不同的方式实现,比如C,C++,Java,C#,JavaScript,甚至Python本身。本文是对不同Python实现的简单介绍和比较,以后还会继续扩展。


CPython.

CPython是标准Python,是其他Python编译器的参考实现。一般来说,“Python”这个词指的是CPython。


CPython是用c写的,c把Python源代码编译成CPython字节码,由虚拟机解释执行。不使用JIT等技术,垃圾收集使用引用计数。


所以,当有人问Python解释执行还是编译执行,答案可以是这样的:Python(CPython)将Python源代码编译成CPPython字节码,然后虚拟机解释执行这些字节码。


如果你需要大量使用C写的第三方扩展,或者让大部分用户直接使用你的Python代码,那就改用CPPython。


Jython.

Python由Jython在JVM上实现,Java编写。Jython将Python源代码编译成JVM字节码,JVM执行相应的字节码。所以可以很好的和JVM集成,比如利用JVM的垃圾收集和JIT直接在JVM上导入和调用其他语言编写的库和函数。


对于希望使用Python简化JVM上的工作流程,或者由于某些原因需要使用Python语言的Java相关代码的用户,强烈推荐使用Jython,不要使用太多的CPPython扩展。


IronPython.

IronPython和Jython类似,不同的是IronPython在CLR中实现Python,面向。NET平台,用C#编写。


IronPython将源代码编译成TODOCLR,也可以很好地与。.NET平台。也就是说,像Jython一样,它可以使用JIT、垃圾收集和。NET框架来导入和调用用其他语言编写的库和函数。.NET。IronPython默认使用Unicode字符串。


此外,PythonToolsforVisualStudio可以将CPython和IronPython无缝集成到vs中。如果只需要在Windows上开发大型Python项目。在条件允许的情况下,IronPython是一个不错的选择。


PyPy.

这里的PyPy指的是RPython和TracingJIT技术实现的Python,而不是RPython工具链。PyPy可以选择多种垃圾收集方式,比如标签移除、标签压缩、生成等等。


对于CPython来说,PyPy的性能明显提高了,但是对第三方模块的支持真的很弱。比如CPythonCAPI写的扩展不能很好的支持,SWIG,SIP等工具写的扩展根本不能支持。甚至NumPy都要在编译器级别从头实现。即使实现了,也只能在Python级别使用,不能在非Python环境下被其他第三方模块使用。


皮斯顿.

Pyston是Dropbox开发的,用C++11编写,采用了一次一法-JIT和MarkSweep-StoptheWorld的GC技术。Pyston使用像JavaScriptV8那样的多层编译,其中LLVM也是用来优化代码的。Pyston在发展,不成熟。但是它的前景很有希望。


总结一下

在了解python是什么,python能做什么的基础上,相信大家已经了解了这些主要的python实现,以及它们之间的区别。他们之间也有一些区别和区别,比如Cython,Brython,RubyPython。


*文章内容和图片均来源于网络,如有侵权,请联系删除。

查看剩余内容
loading
Hi,我是教育宝平台顾问 添加我的微信,在查找或下载资料时,有任何问题,我会随时为您解决~
loading
扫描二维码 添加顾问微信

点赞

收藏

资深学习规划师,免费帮您答疑解惑,定制学习方案
限时免费咨询
教育宝IT技术频道
教育宝致力于打造中国最专业的IT技术学习平台,为IT技术学员、教育机构、从业者和上下游搭建连接、互动、交流和赋能平台。