很多小伙伴在使用python的时候都会感慨:这语言也太好用了吧!但是这么好用的语言他是怎么实现的呢?接下来这篇文章我们不谈技术,就来好好聊一下python是怎么实现的。
一门语言的实现往往依赖于另一门语言(除了机器码),比如说C语言的实现就是由汇编实现的(由汇编语言实现C语言编译器,然后用编译器将C语言编译成汇编语言),汇编语言是由机器语言实现的(汇编语言就是机器语言加上部分助记符),而python这门语言就厉害了,实现python语言的语言有好几种,接下来我们来看看都有哪些吧。
C语言实现的CPython
所有的python版本中,C语言实现的python被称为CPython,是使用最广泛的一个python版本,同时它也是python的官方版本,因此一些新的语言特性也会最先出现在这里。
java实现的JPython
没想到吧,C语言实现了python,java也能实现python。JPython是python的另一种版本,它相比于CPython而言拥有了更高的与java语言之间的互操作性(毕竟是java实现的),具体表现在它可以直接使用java代码库。
JPython最后会将python代码编译成java字节码(没错,jdk也是将java代码编译成字节码)然后放到java虚拟机内解释执行,这就意味着实际上JPython写的代码最后和java写的代码没有区别,只不过源代码不一样(可以理解为同样代码的不同源代码实现)。
python实现的PyPy
如果你预判到了上面的java实现python的操作的话,那么python实现python你能预判到吗?其实这也很好理解,在计算机领域有一个名词叫图灵完备语言。图灵完备语言的一个特点就是,可以自己实现自己。比如说你可以使用汇编语言写一个汇编语言的编译器,也可以使用C语言写一个C语言的编译器(事实上现在的C语言编译器也确实是用C语言写的)。而python也是一门图灵完备语言,所以你可以使用python实现一个python编译器,然后进行python代码的编译(套娃行为)。
其他python语言的实现
实现python的不止只有上面三大语言巨头,还有一些别的语言,比如使用.NET语言和C#语言实现的python,它的操作和java的操作类似,它也能拥有更好的跟.NET语言的互操作性。还有一种特殊的实现被称为Stackless,这种实现可以支持更多的线程,但由于小编对这个实现并不是很了解,所以不做深入介绍。
小结
以上就是python是怎么实现的全部内容,更多有趣的python知识可以关注W3Cschool,小编会坚持给大家分享有趣的python见闻的。