非官方的Python实现

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

Python的“实现”应理解为表示程序或环境,该程序或环境为以Python语言编写的程序的执行提供支持,如CPython参考实现所示。

已经有并且提供了许多不同的软件包,这些软件包提供了我们大家都公认的Python,尽管其中一些更像是某些现有实现的发行版或变体,而不是该语言的全新实现。

  1. 铁蟒
  2. 吉顿
  3. 转加密
铁蟒

.NET和以C#编写的Mono的开源实现,根据Apache License 2.0许可。 它依靠DLR

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

与CPython的区别:
  • 与.NET Framework紧密集成。
  • 字符串默认为Unicode。
  • 不支持用C编写的CPython扩展。
  • 不受全局翻译锁定的影响。
  • 尽管取决于测试,但性能通常较低。
你好,世界
print "Hello World!"
您还可以使用.NET函数:
import clr
from System import Console
Console.WriteLine("Hello World!")
外部链接
  • 官方网站
  • GitHub资料库
吉顿

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

与CPython的区别:
  • 与JVM紧密集成。
  • 字符串是Unicode。
  • 不支持用C编写的CPython扩展。
  • 不受全局翻译锁定的影响。
  • 尽管取决于测试,但性能通常较低。
你好世界 打印“你好世界!”

您还可以使用Java函数:

from java.lang import System
System.out.println("Hello World!") 
外部链接
  • 官方网站
  • 汞库
转加密

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

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

经验表明,650 kB的Python源代码可以大致翻译为相同数量JavaScript源代码。 该速度与手写JavaScript的速度相匹配,并且如果打开了呼叫记录功能,则可以超过该速度。

与HTML集成
<script src="__javascript__/hello.js"></script>
<h2>Hello demo</h2>
<p>
<div id = "greet">...</div>
<button onclick="hello.solarSystem.greet ()">Click me repeatedly!</button>
<p>
<div id = "explain">...</div>
<button onclick="hello.solarSystem.explain ()">And click me repeatedly too!</button>
与JavaScript和DOM集成

SolarSystem类:

planets =[list (chain (planet, (index + 1,))) for index, planet in enumerate ((
 ('Mercury', 'hot', 2240),
 ('Venus', 'sulphurous', 6052),
 ('Earth', 'fertile', 6378),
 ('Mars', 'reddish', 3397),
 ('Jupiter', 'stormy', 71492),
 ('Saturn', 'ringed', 60268),
 ('Uranus', 'cold', 25559),
 ('Neptune', 'very cold', 24766)
 ))]
lines = (
 '{} is a {} planet',
 'The radius of {} is {} km',
 '{} is planet nr. {} counting from the sun'
 )
def __init__ (self):
 self.lineIndex = 0
def greet (self):
 self.planet = self.planets [int (Math.random () * len (self.planets))]
 document.getElementById ('greet') .innerHTML = 'Hello {}'.format (self.planet [0])
 self.explain ()
 def explain (self):
 document.getElementById ('explain').innerHTML = (
 self.lines [self.lineIndex] .format (self.planet [0], self.planet [self.lineIndex + 1])
 )
 self.lineIndex = (self.lineIndex + 1) % 3
 solarSystem = SolarSystem () 
与其他JavaScript库集成

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

Python和JavaScript代码之间的关系 Python
class A:
 def __init__ (self, x):
 self.x = x
 def show (self, label):
 print ('A.show', label, self.x) 
class B:
 def __init__ (self, y):
 alert ('In B constructor')
 self.y = y 
 def show (self, label):
 print ('B.show', label, self.y) 
class C (A, B):
 def __init__ (self, x, y):
 alert ('In C constructor')
 A.__init__ (self, x)
 B.__init__ (self, y)
 self.show ('constructor') 
 def show (self, label):
 B.show (self, label)
 print ('C.show', label, self.x, self.y) 
a = A (1001)
a.show ('america')
b = B (2002)
b.show ('russia')
c = C (3003, 4004)
c.show ('netherlands')
show2 = c.show
show2 ('copy')
JavaScript
var A = __class__ ('A', [object], {
 get __init__ () {return __get__ (this, function (self, x) {
 self.x = x;
 });},
 get show () {return __get__ (this, function (self, label) {
 print ('A.show', label, self.x);
 });}
});
var B = __class__ ('B', [object], {
 get __init__ () {return __get__ (this, function (self, y) {
 alert ('In B constructor');
 self.y = y;
 });},
 get show () {return __get__ (this, function (self, label) {
 print ('B.show', label, self.y);
 });}
});
var C = __class__ ('C', [A, B], {
 get __init__ () {return __get__ (this, function (self, x, y) {
 alert ('In C constructor');
 A.__init__ (self, x);
 B.__init__ (self, y);
 self.show ('constructor');
 });},
 get show () {return __get__ (this, function (self, label) {
 B.show (self, label);
 print ('C.show', label, self.x, self.y);
 });}
});
var a = A (1001);
a.show ('america');
var b = B (2002);
b.show ('russia');
var c = C (3003, 4004);
c.show ('netherlands');
var show2 = c.show;
show2 ('copy');

From: https://bytes.com/topic/python/insights/972333-non-official-python-implementations

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值