Python 本身只是一种编程语言规范,可以使用其它编程语言实现它或扩展它;譬如:采有 Python C Java .Net 等重实现 Python,而采用 Python C/C++ C# Java .Net 等扩展 Python 实现。

但不管采用哪种编程语言实现 Python,都会基本遵守 Python 语言规范并带有常用 Python 内置函数及标准库模块。

替代实现

由官方维护的 CPython 是基于 C 编程语言实现的 Python,解释器采用 C 编程语言实现,也是最流行、兼容性最强的 Python 实现。最新版本支持 Python 3.9.7,Python 2.7.18 已于 2020 年停止维护。

由 Python 编程语言实现的 Python 称为 PyPy,解释器采用 Python 编程语言实现;具有无堆栈支持和即时编译器,官方称比 CPython 平均快 4.2 倍。最新版本支持 Python 3.7,稳定版本支持 Python 2.7.18。

由 .Net 编程语言实现的 Python 称为 IronPython,解释器采用 .Net 编程语言实现;IronPython 会生成 IL 中间语言,并将 Python 代码编译成 .NET 汇编。最新版本支持 Python 3.4,稳定版本支持 Python 2.7.18。

MicroPython 也是以 C 编程语言实现的 Python,主要用于物联网 MCU (微控制单元,又称单片机);但对 Python 做了大量简化,最新版本支持 Python 3.4。

由 Java 编程语言实现的 Python 称为 Jython,解释器采用 Java 编程语言实现。Jython 稳定版支持 Python 2.7.18。

Python for .NET 是基于 CPython 实现的另一实现,但它可管理 .NET 应用程序并使 .NET 库可用。

Cython 0.29.6 中文文档编制

采用 Cython 扩展模块

这几年很流行,因为其采用类似 Python 的语法,按近似 C 的运行效率扩展 CPython 实现。

Cython 可以将现成 Python 编程语言编写的模块,转换成 C 中间代码,最后编译生成 *.PYD 模块,效率能提升 20%-50%。

Cython 常用于将类似 Python 语法编写的 *.PYX 扩展模块,转换成 C 中间代码,最后编译生成 *.PYD 模块,效率常能提升几倍以上 (运行效率接近于 C 语言)。

采用 Python 扩展模块

采用 Python 编程语言扩展 Python 的最出名开源工程是 PyPy。

当然,为改善 Python 本身的局限性,扩展其兼容性,有时还会采用 C/C++、C#、Java、.Net 等编程语言混合编程。

大家平时使用的大部分 CPython 扩展模块,也主要采用这种方式实现,主要因为其相对简单、成本低、效率高、可跨平台,还有兼容性强、现成模块多。

采用 C/C++ 扩展模块

即采用 C/C++ 编程语言扩展 Python,主要用于 CPython 实现;因为 CPython 实现底层就是采用 C 编程语言实现的。

但需要符合 CPython C/C++ API 规范 要求,且需编译生成 *.PYD 模块文档。


扫一扫关注 德云社区 微信公众号

最新文章

  1. BPM始终服务于人,落脚于人
  2. String StringBuffer StringBuilder
  3. Linux lsof详解
  4. Java笔记——面向接口编程(DAO模式)
  5. mysql计算连续天数,mysql连续登录天数,连续天数统计
  6. excel多个文件合并
  7. 关于 yii 验证码显示, 但点击不能刷新的处理
  8. 采购IC应该知道的十大网站
  9. Javascript中的__proto__、prototype、constructor
  10. python之路: 基础篇
  11. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)
  12. 数据库问题(程序连接mysql错误)
  13. 完美脱离Windows!! Linux发行版第一系统 Manjaro 开箱教程 :)
  14. 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]
  15. [UE4]RPC,远程调用
  16. java 图片压缩 缩放
  17. Lua中数组的学习
  18. 搭建Idea授权服务器用于学习
  19. python的字符串连接操作符+
  20. [洛谷P3175][HAOI2015]按位或

热门文章

  1. JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
  2. Netty 源码分析系列(一)Netty 概述
  3. C++11 noexcept 关键字用法学习
  4. Build Puppet Clusters with Vagrant
  5. 进程信号的未决状态(pending status)
  6. Linux之cat tail less常见用法
  7. S3C2440—10.代码重定位
  8. uniapp scroll-view 组件横向滑动失效(ios问题出的最多)
  9. .net 温故知新:【5】异步编程 async await
  10. commandBinding 的命令