Python Implementations.jpg

Python是一种解释性的,交互式的,面向对象的编程语言。它还可用作需要可编程接口的应用程序的扩展语言。最后,Python是可移植的:它可以在许多Unix变种上运行,在Mac上运行,在Windows 2000和更高版本上运行。

Python实现

Python的"实现"应该被理解为一种程序或环境,它为用Python语言编写的程序的执行提供支持,如CPython参考实现所表示的。

已经有几个不同的软件包提供了我们都认为是Python的东西,尽管其中一些更像是某些现有实现的分布或变体,而不是一种全新的语言实现。

  1. IronPython的
  2. Jython的
  3. Transcrypt

IronPython的

用C#编写的.NET和Mono的开源实现,在Apache License 2.0下获得许可。它依赖于DLR

(动态语言运行时)。它仅支持2.7版本,目前正在开发版本3。

与CPython的差异:

  • 与.NET Framework紧密集成。
  • 字符串默认为Unicode。
  • 不支持用C编写的CPython扩展。
  • 不受Global Interpreter Lock的影响。
  • 虽然性能取决于测试,但性能通常较低。

你好,世界

您还可以使用.NET函数:

  1. 进口clr
  2. 从系统导入控制台
  3. Console.WriteLine("Hello World!") 外部链接

  • 官方网站
  • GitHub存储库

Jython的

用Java编写的JVM的开源实现,在Python Software Foundation License下获得许可。它仅支持2.7版本,目前正在开发版本3。

与CPython的差异:

  • 与JVM紧密集成。
  • 字符串是Unicode。
  • 不支持用C编写的CPython扩展。
  • 不受Global Interpreter Lock的影响。
  • 虽然性能取决于测试,但性能通常较低。

你好,世界

打印"Hello World!"

您还可以使用Java函数:

  1. 来自java.lang import System
  2. System.out.println("Hello World!")

外部链接

  • 官方网站
  • Mercurial存储库

Transcrypt

Transcrypt是一个将相当广泛的Python子集预编译为紧凑,可读的Javascript的工具。它具有以下特点:

  • 允许使用纯Python语法进行多重继承的经典OO编程,并进行解析
    CPython的原生解析器
  • 而是与高质量的面向Web的JavaScript库无缝集成
    而不是面向桌面的Python
  • 基于分层URL的模块系统,允许通过PyPi进行模块分发
  • Python源代码和生成的JavaScript代码之间的简单关系,便于调试
  • 多级源映射和带源引用的目标代码的可选注释
  • 压缩下载,KB而不是MB
  • 优化的JavaScript代码,使用memoization(调用缓存)来选择性地绕过原型
    查找链
  • 可以在本地打开和关闭操作员重载,以便于读取数值数学

代码大小和速度

经验表明,650 kB的Python源代码大致翻译成相同数量的JavaScript源代码。速度与手写JavaScript的速度相匹配,如果打开呼叫记忆,它可以超越它。

与HTML集成

  1. <script src =" javascript /hello.js"> </ script>

  2. <h2> Hello demo </ h2>

  3. <P>

  4. <div id ="greet"> ... </ div>

  5. <button onclick ="hello.solarSystem.greet()">反复点击我!</ button>

  6. <P>

  7. <div id ="explain"> ... </ div>

  8. <button onclick ="hello.solarSystem.explain()">并反复点击我!</ button> 与JavaScript和DOM集成

类SolarSystem:

  1. planets = [list(chain(planet,(index + 1,)))用于索引,行星以枚举((

  2. ('水星','热',2240),

  3. ('维纳斯','硫磺',6052),

  4. ('地球','肥沃',6378),

  5. ('火星','红色',3397),

  6. ('木星','暴风雨',71492),

  7. ('土星','环状',60268),

  8. ('天王星','冷',25559),

  9. ('海王星','非常冷',24766)

  10. ))]

  11. lines =(

  12. '{}是{}星球',

  13. '{}的半径是{} km',

  14. '{}是行星nr。 {}从太阳算起来'

  15. def init (self):

  16. self.lineIndex = 0

  17. def greet(self):

  18. self.planet = self.planets [int(Math.random()* len(self.planets))]

  19. document.getElementById('greet').innerHTML ='Hello {}'。format(self.planet [0])

  20. self.explain()

  21. def解释(自我):

  22. document.getElementById('explain')。innerHTML =(

  23. self.lines [self.lineIndex] .format(self.planet [0],self.planet [self.lineIndex + 1])

  24. self.lineIndex =(self.lineIndex + 1)%3

  25. solarSystem = SolarSystem()

与其他JavaScript库集成

Transcrypt可以与任何JavaScript库结合使用,无需特殊措施或语法。在文档中,给出了ao react.js,riot.js,fabric.js和node.js的示例。

Python和JavaScript代码之间的关系

蟒蛇

  1. A类:

  2. def init (self,x):

  3. self.x = x

  4. def show(自我,标签):

  5. print('A.show',label,self.x)

  6. B级:

  7. def init (self,y):

  8. alert('在B构造函数中')

  9. self.y = y

  10. def show(自我,标签):

  11. print('B.show',label,self.y)

  12. C类(A,B):

  13. def init (self,x,y):

  14. alert('在C构造函数中')

  15. A. init (self,x)

  16. B. init (self,y)

  17. self.show('constructor')

  18. def show(自我,标签):

  19. B.show(自我,标签)

  20. print('C.show',label,self.x,self.y)

  21. a = A(1001)

  22. a.show('美国')

  23. b = B(2002)

  24. b.show('russia')

  25. c = C(3003,4004)

  26. c.show('荷兰')

  27. show2 = c.show

  28. show2('copy') JavaScript

  29. var A = class ('A',[object],{

  30. get init (){return get (this,function(self,x){

  31. self.x = x;

  32. });},

  33. get show(){return get (this,function(self,label){

  34. print('A.show',label,self.x);

  35. });}

  36. });

  37. var B = class ('B',[object],{

  38. get init (){return get (this,function(self,y){

  39. alert('在B构造函数中');

  40. self.y = y;

  41. });},

  42. get show(){return get (this,function(self,label){

  43. print('B.show',label,self.y);

  44. });}

  45. });

  46. var C = class ('C',[A,B],{

  47. get init (){return get (this,function(self,x,y){

  48. alert('在C构造函数中');

  49. A. init (self,x);

  50. B. init (self,y);

  51. self.show('constructor');

  52. });},

  53. get show(){return get (this,function(self,label){

  54. B.show(自我,标签);

  55. print('C.show',label,self.x,self.y);

  56. });}

  57. });

  58. var a = A(1001);

  59. a.show('美国');

  60. var b = B(2002);

  61. b.show('russia');

  62. var c = C(3003,4004);

  63. c.show('netherlands');

  64. var show2 = c.show;

  65. show2('copy');

查看英文原文

查看更多文章

公众号:银河系1号

联系邮箱:public@space-explore.com

(未经同意,请勿转载)