Sök…


Ironpython

Open-source-implementering för .NET och Mono skrivna i C #, licensierade under Apache License 2.0. Det förlitar sig på DLR (Dynamic Language Runtime). Den stöder endast version 2.7, version 3 utvecklas för närvarande.

Skillnader med CPython:

  • Tät integration med .NET Framework.
  • Strängar är Unicode som standard.
  • Stöder inte tillägg för CPython skrivna i C.
  • Lider inte av det globala tolklåset.
  • Prestanda är vanligtvis lägre, även om det beror på tester.

Hej världen

print "Hello World!"

Du kan också använda .NET-funktioner:

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

externa länkar

Jython

Open source-implementering för JVM skriven i Java, licensierad under Python Software Foundation License. Den stöder endast version 2.7, version 3 utvecklas för närvarande.

Skillnader med CPython:

  • Tät integration med JVM.
  • Strängar är Unicode.
  • Stöder inte tillägg för CPython skrivna i C.
  • Lider inte av det globala tolklåset.
  • Prestanda är vanligtvis lägre, även om det beror på tester.

Hej världen

print "Hello World!"

Du kan också använda Java-funktioner:

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

externa länkar

Transcrypt

Transcrypt är ett verktyg för att förkomponera en ganska omfattande delmängd av Python till kompakt, läsbart Javascript. Det har följande egenskaper:

  • Tillåter klassisk OO-programmering med flera arv med ren Python-syntax, analyserad av CPythons ursprungliga parser
  • Sömlös integration med universumet av högkvalitativa webborienterade JavaScript-bibliotek snarare än de skrivbordsorienterade Python-biblioteken
  • Hierarkiskt URL-baserat modulsystem som tillåter moduldistribution via PyPi
  • Enkel relation mellan Python-källa och genererad JavaScript-kod för enkel felsökning
  • Multi-level sourcemaps och valfri kommentering av målkod med källreferenser
  • Kompakta nedladdningar, kB: er snarare än MB
  • Optimerad JavaScript-kod, med memoization (samtalcache) för att valfritt kringgå prototypuppsökningskedjan
  • Operatörens överbelastning kan slås på och stängas lokalt för att underlätta läsbar numerisk matematik

Kodstorlek och hastighet

Erfarenheten har visat att 650 kB Python-sourcode ungefär översätter i samma mängd JavaScript-källkod. Hastigheten matchar hastigheten på handskriven JavaScript och kan överträffa den om samtal memoizing är på.

Integration med 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>

Integration med JavaScript och 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 ()

Integration med andra JavaScript-bibliotek

Transcrypt kan användas i kombination med alla JavaScript-bibliotek utan speciella åtgärder eller syntax. I dokumentationen ges exempel på ao react.js, riot.js, fabric.js och node.js.

Förhållandet mellan Python och JavaScript-kod

Pytonorm

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

externa länkar



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow