【Python】Python解释器的几种实现版本_python 如何讲 cpython linux 文件解析成py_王晓斌的博客-程序员秘密

技术标签: Python.相关文档  Python  

我们都知道python的解释器有很多种实现方式,有C的,java的,还有python的等等,对应的也就是Cpython,Jython,一直比较火的PyPy ,今天就来盘点下这些版本(不一定非常全)

CPython

CPython 是默认的python实现,环境或者是解释器(你喜欢哪个就那么叫)。脚本大多数情况下都运行在这个解释器中。 CPython是官方的python解释器,完全按照python的规格和语言定义来实现,所以被当作其他版本实现的参考版本。CPython是用C语言写的,当执行代码的时候Pythond代码会被转化成字节码(bytecode)。所以CPython是个字节码解释器。当我们从Python官网下载安装包安装,或者是通过类似 "apt-get" 或者 "yum"工具安装的时候,安装的都是CPython版本。

PyPy

*PyPy * 是一个很多地方都和CPython很像的实现,但是这个解释器本身就是由Python写成。也就是说开发者们用Python写了一个Python解释器。然而这个解释器的代码先转化成C,然后在编译。PyPy被认为要比CPython性能更好。因为CPython会把代码转化成字节码,PyPy会把代码转化成机器码。

Psyco

Psyco 是一个类似PyPy,但是很好的解释器。现在已经被PyPy取代了,有可能的话,使用PyPy来代替Psyco。

Jython

Jython是用java实现的一个解释器。Jython允许程序员写 Python代码,还可以把java的模块加载在python的模块中使用。Jython使用了JIT技术,也就是说运行时Python代码会先转化成 Java 字节码(不是java源代码),然后使用JRE执行。程序员还可以用Jython把Python代码打成jar包,这些jar和java程序打包成的 jar一样可以直接使用。这样就允许Python程序员写Java程序了。但是呢,必须要知道哪些Java模块可以在Jython中使用,然后使用 Python的语法就可以写程序了。Jython兼容python2,也可以使用命令行来写交互式程序。

IronPython

IronPython 是使用C#语言实现,可以使用在.NET 和 Mono 平台的解释器。IronPython 是兼容 Silverlight 的,配合Gestalt 就可以直接在浏览器中执行。IronPython也是兼容Python2的。

tip: Mono 是提供.NET-compatible 工具的开源框架。

CLPython

CLPython 是用 Common Lisp实现的一个解释器,现在不提倡使用。它允许 Python 和 Common Lisp 的代码混合使用。 跟Python2兼容。

PyS60

PyS60 (Python for S60) 是诺基亚 S60 平台的一个实现版本,不赞成使用。

ActivePython

ActivePython 是基于CPython然后添加一系列拓展的一个实现。是由ActiveState发布的。Python2 和 Python3 都兼容。

Cython

Cython(不是CPython)是一个允许把Python代码转化成 C/C++代码或者使用各种各样的C/C++模块/文件的实现。换句话说,Cython是C/C++ 和Python的一个桥梁。Cython也是Python的一种方言。开发者也可以使用Cython来执行Python脚本,并且执行效率比 CPython更快。另外,开发者可以写一个Python脚本,使用Cython来编译成(linux上.so 或者是Windows上的.dll)类库,然后当作一个Python模块来使用。Cython脚本使用*.pyx作为拓展名。Cython兼容Python2和Python3。

tips: Python 模块 modules 和 类库libraries是一个东西,只是叫法不同。

QPython

QPython 是CPython解释器的一个安卓接口。QPython 来自Python的安卓模块。可以在 Google Play中找到QPython。

Kivy

Kivy 是一个开源的框架(使用Python解释器),它可以运行在 Android, iOS, Windows, Linux, MeeGo, Android SDK, 和 OS X平台上。 支持Python3, 开发者正在开发其兼容Cython上的Python3。

SL4A

SL4A (Scripting Layer for Android) 是一个允许安卓上执行各种脚本语言的兼容层。SL4A 有很多的模块,我们比较关注的是“Py4A” (Python for Android)。 Py4A 是安卓平台上的一种CPython。

其他

还有很多其他的不同实现。例如WPython,DSPython 请参见 Wiki

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/robinjwong/article/details/4298459

智能推荐

postgresql 判断是空的_PostgreSQL NULL值_weixin_39689428的博客-程序员秘密

PostgreSQL的NULL是一个术语,用来代表一个缺失值。 NULL值表中的一个字段中的值,显示为空白。yiibai.com一个NULL值的字段与字段没有值。这是非常重要的,要了解的是一个NULL值是不同于一个零值或一个字段为空格。www.yiibai.com语法:使用NULL,在创建表的基本语法如下: www.yiibai.comCREATE TABLE COMPANY(ID INT PRI...

Unity Shader(二)_EvanXZ的博客-程序员秘密

细说一下Porperties属性部分。Properties可以理解为是材质与Shader的连接通道,我们在材质面板上需要设置的内容都必须通过Properties来实现并暴露。语法格式属性的写法有个通用的格式:[Attribute]_Name ("Display Name",Type) = Default Value Attribute 属性标记,说白了就是Unity内置的...

CentOS安装配置Nginx服务器_contenos 安装nginx_啊Abu的博客-程序员秘密

CentOS安装配置Nginx服务器本文参考http://www.runoob.com/linux/nginx-install-setup.html编写安装成功图示搭建环境CentOS Linux release 7.3.1611 (Core) (64)查看系统版本查看版本: cat /etc/redhat-release 查看64or32:getconf LONG_BIT安装步骤:

【语谱图】基于matlab语音信号语谱图【含Matlab源码 137期】_语谱图matlab_海神之光的博客-程序员秘密

3]宋云飞,姜占才,魏中华.基于MATLAB GUI的语音处理界面设计[J].科技信息. 2013,(02)[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.,扫描上面二维码,付费29.9元订阅海神之光博客。简介此部分摘自互联网,仅供参考,若侵权,联系删除。,凭支付凭证,私信博主,可免费获得。份本博客上传CSDN资源代码(为订阅日起,三天内有效);

android让界面不被弹出的键盘挤上去_android开发如何让软键盘覆盖界面不挤压_李峰峰的博客-程序员秘密

在androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan"  可以让界面不被弹出的键盘挤上去。

php通过curl发送xml数据,并获取XML_李传海的博客-程序员秘密

php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xml,并通过服务器接收一、发送xml数据 —— postXml.php<?php//首先检测是否支持curlif(!extension_loaded("curl")){trigger_error("对不起,请开启curl功能模块!",E_USE...

随便推点

怎么看待腾讯发布VR、AR一体机设备,进入虚拟现实领域_yanzhanyi的博客-程序员秘密

腾讯,社交与游戏被Google Glass、Oculus一带而起的AR/VR行业这两年开始不断升温,每一个希望布局的大公司和有技术实力的小公司都跃跃欲试,腾讯在这时推出了TOS系统,以及即将面世的VR、AR产品,我认为正是看准了时机重砸一锤!1、从用户角度:以腾讯的社交网络,产品一出,体量巨大。用户对腾讯游戏有一定粘性,对腾讯产品的体验反应良好,一个有内容、价格合适、新奇的游戏设备

IT项目管理经验分享_谷雨霖的博客-程序员秘密

小A分享到:很多IT项目经理都会询问,如何调动业务部门的积极性,与项目组成员一起努力工作?我觉得大体上可以从以下三个方面来调动: 1 使之产生工作的意愿 让业务部门成员有收获和成就感: 通过正式和非正式的交流,使之认识到项目给他们带来的好处和成就感,使个人在项目中学到知识(业务知识),能力得到提升(组织能力,做事方法等) 2 帮助形成工作的能力 进行方法论培训: 每做一件事情让

5.2 自然语言处理与词嵌入 (后续内容pass,断更,对NLP没兴趣)_bijingrui的博客-程序员秘密

词嵌入此前单词的表示方法:one-hot一个列向量,只有字典index对应的元素是1,其他都是0.各个单词比较独立,无法表示词与词之间的关系。使用词嵌入,可以表示很多特性使用词嵌入技术:迁移学习+词嵌入好处:例子1:SJ是一个orange farmer。例子2:AB是一个apple farmer。如果使用one hot,词比较独立,orange换成apple,神经网络识别不出AB也是个人名。而使用词嵌入,orange换成apple,神经网络能推断出AB.

vscode解决重复输入git用户和密码问题_vscode git重复弹出登录_绝尘花遗落的博客-程序员秘密

只要是使用git操作,不管是同步,拉去,克隆,vscode总让我们输入用户名及密码,是一件很繁琐的事情我们打开终端 输入git config --global credential.helper store再退出vscode并重启,进行git操作,就发现,vscode不再让我们每次都输入用户名和密码啦!...

BN层原理及作用_bn层的原理和作用_VictorHan01的博客-程序员秘密

BN:batchnorm 批量标准化。解决的问题:输入的数据都具有不同的分布,会给下层网络的训练带来困难。计算方法:1.先求出此次批量数据x的均值2.求出此次批量的方差3.接下来就是对本次批量的x做归一化:xi-E(x)/(根号下批量方差-极小值(eps))防止分母为0.4.最后最重要,引入缩放和平移变量γ和β如果γ和β分别等于此batch的方差和均值,那么yi就还原到...

mysql 数据入库去重_MySQL中去重 distinct 的用法 ,数据库去重distinct_余羊的博客-程序员秘密

一、distinct 位置1. 单独的distinct只能放在开头,否则报错,语法错误mysql>SELECTnickname,DISTINCT(openid)fromims_ewei_shop_member;[SQL]SELECTnickname,DISTINCT(openid)fromims_ewei_shop_member;[Err]1064-Youhavean...

推荐文章

热门文章

相关标签