Ricerca…


IronPython

Implementazione open source per .NET e Mono scritto in C #, concesso in licenza con Apache License 2.0. Si basa su DLR (Dynamic Language Runtime). Supporta solo la versione 2.7, la versione 3 è attualmente in fase di sviluppo.

Differenze con CPython:

  • Stretta integrazione con .NET Framework.
  • Le stringhe sono Unicode per impostazione predefinita.
  • Non supporta le estensioni per CPython scritto in C.
  • Non soffre di Global Interpreter Lock.
  • Le prestazioni sono generalmente inferiori, anche se dipendono dai test.

Ciao mondo

print "Hello World!"

Puoi anche utilizzare le funzioni .NET:

import clr
from System import Console
Console.WriteLine("Hello World!")

Jython

Implementazione open source per JVM scritta in Java, concessa in licenza con Python Software Foundation License. Supporta solo la versione 2.7, la versione 3 è attualmente in fase di sviluppo.

Differenze con CPython:

  • Stretta integrazione con JVM.
  • Le stringhe sono Unicode.
  • Non supporta le estensioni per CPython scritto in C.
  • Non soffre di Global Interpreter Lock.
  • Le prestazioni sono generalmente inferiori, anche se dipendono dai test.

Ciao mondo

print "Hello World!"

Puoi anche utilizzare le funzioni Java:

from java.lang import System
System.out.println("Hello World!")

Transcrypt

Transcrypt è uno strumento per precompilare un sottoinsieme abbastanza ampio di Python in Javascript compatto e leggibile. Ha le seguenti caratteristiche:

  • Permette la programmazione OO classica con ereditarietà multipla usando la pura sintassi Python, analizzata dal parser nativo di CPython
  • Perfetta integrazione con l'universo di librerie JavaScript orientate al web di alta qualità, piuttosto che con quelle di Python orientate al desktop
  • Sistema di moduli gerarchico basato su URL che consente la distribuzione dei moduli tramite PyPi
  • Semplice relazione tra l'origine Python e il codice JavaScript generato per un facile debug
  • Sorgenti di codice multi-livello e annotazione facoltativa del codice di destinazione con riferimenti di origine
  • Download compatti, kB anziché MB
  • Codice JavaScript ottimizzato, utilizzando la memoizzazione (caching delle chiamate) per aggirare facoltativamente la catena di ricerca del prototipo
  • Il sovraccarico dell'operatore può essere attivato e disattivato localmente per facilitare la matematica numerica leggibile

Dimensioni e velocità del codice

L'esperienza ha dimostrato che 650 kB di codice sorgente Python si traducono approssimativamente nella stessa quantità di codice sorgente JavaScript. La velocità corrisponde alla velocità del JavaScript scritto a mano e può superarla se viene attivata la funzione Memo.

Integrazione con 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>

Integrazione con JavaScript e DOM

from itertools import chain

class 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 ()

Integrazione con altre librerie JavaScript

Transcrypt può essere utilizzato in combinazione con qualsiasi libreria JavaScript senza misure speciali o sintassi. Nella documentazione sono forniti esempi per ao react.js, riot.js, fabric.js e node.js.

Relazione tra Python e codice JavaScript

Pitone

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');


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow