수색…


IronPython

C #으로 작성된 .NET 및 Mono 용 오픈 소스 구현으로 Apache License 2.0에서 라이센스가 제공됩니다. DLR (Dynamic Language Runtime)에 의존합니다. 버전 2.7 만 지원하며 버전 3은 현재 개발 중입니다.

CPython과의 차이점 :

  • .NET Framework와의 긴밀한 통합.
  • 문자열은 기본적으로 유니 코드입니다.
  • C로 작성된 CPython 확장을 지원하지 않습니다.
  • 전역 통역사 잠금 기능을 사용하지 않습니다.
  • 성능은 테스트에 따라 다르지만 일반적으로 낮습니다.

안녕하세요 세계

print "Hello World!"

.NET 기능을 사용할 수도 있습니다.

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

외부 링크

자이 썬

자바로 작성된 JVM을위한 오픈 소스 구현체로서 파이썬 소프트웨어 재단 라이선스에 따라 라이선스가 허여되었다. 버전 2.7 만 지원하며 버전 3은 현재 개발 중입니다.

CPython과의 차이점 :

  • JVM과의 긴밀한 통합.
  • 문자열은 유니 코드입니다.
  • C로 작성된 CPython 확장을 지원하지 않습니다.
  • 전역 통역사 잠금 기능을 사용하지 않습니다.
  • 성능은 테스트에 따라 다르지만 일반적으로 낮습니다.

안녕하세요 세계

print "Hello World!"

Java 기능을 사용할 수도 있습니다.

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

외부 링크

트랜스 크립트

Transcrypt는 상당히 광범위한 Python 하위 집합을 작고 읽기 쉬운 Javascript로 사전 컴파일하는 도구입니다. 그것은 다음과 같은 특성을 가지고 있습니다 :

  • 순수 파이썬 구문을 사용하여 다중 상속을 사용하여 고전적인 OO 프로그래밍이 가능하며 CPython의 네이티브 구문 분석기로 구문 분석됩니다.
  • 데스크탑 지향 Python 프레임 워크가 아닌 고품질의 웹 지향 JavaScript 라이브러리와의 완벽한 통합
  • PyPi를 통한 모듈 배포를 허용하는 계층 적 URL 기반 모듈 시스템
  • 쉬운 디버깅을 위해 Python 소스와 생성 된 JavaScript 코드 간의 간단한 관계
  • 다중 레벨 소스 맵 및 소스 참조가있는 대상 코드의 선택적 주석
  • MB 다운로드보다 kB 다운로드
  • 선택적으로 프로토 타입 조회 체인을 우회하기 위해 메모 작성 (호출 캐싱)을 사용하여 최적화 된 JavaScript 코드
  • 운영자 과부하는 읽을 수있는 수치 계산을 용이하게하기 위해 로컬로 켜고 끌 수 있습니다.

코드 크기 및 속도

650kB 파이썬 소스 코드는 대략 동일한 양의 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과의 통합

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

다른 JavaScript 라이브러리와의 통합

Transcrypt는 특수 측정이나 구문없이 모든 JavaScript 라이브러리와 함께 사용할 수 있습니다. 문서에서 ao react.js, riot.js, fabric.js 및 node.js에 대한 예제가 제공됩니다.

파이썬과 자바 스크립트 코드 간의 관계

파이썬

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

자바 스크립트

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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow