5 września 2006[1]
wieloparadygmatowy (obiektowy, imperatywny, funkcyjny)
dynamiczne
3.4.2(20 grudnia 2024) [±]
Jim Hugunin
Apache License[2]
wieloplatformowy
IronPython – dynamiczny język programowania napisany w języku C# i stworzony na platformie programistycznej .NET Framework 2.0. Jest to pełnoprawna implementacja języka Python stworzona na bazie specyfikacji Common Language Infrastructure (CLI) i wykonywana pod kontrolą środowiska uruchomieniowego Common Language Runtime (CLR). Jego twórcą jest Jim Hugunin, który jest również twórcą implementacji Jython, napisanej w języku Java i uruchamianej pod kontrolą maszyny wirtualnej Javy.
Do najważniejszych cech implementacji IronPython należy zaliczyć jej pełną integrację z platformą .NET Framework, co wiąże się z możliwością wykorzystania olbrzymiej ilości standardowych i zewnętrznych bibliotek stworzonych dla tej platformy, przy zachowaniu pełnej zgodności z samym językiem Python. Implementacja ta odznacza się dodatkowo doskonałą wydajnością oraz posiada zaimplementowaną w kodzie zarządzanym większą część bibliotek standardowych dostarczanych wraz z językiem Python. IronPython posiada również wsparcie w sztandarowym środowisku programistycznym firmy Microsoft, czyli Visual Studio. Implementację IronPython można wykorzystywać również, tworząc rozwiązania w technologii internetowej Silverlight.
Rozwój implementacji IronPython przyczynił się do powstania uniwersalnego środowiska uruchomieniowego dla dynamicznych języków programowania o nazwie Dynamic Language Runtime (DLR), który stał się zarówno integralną częścią platformy .NET Framework 4.0, jak i samodzielnym, otwartym dla społeczności, projektem typu Open Source. Innym znanym projektem stworzonym na bazie środowiska DLR jest IronRuby, będący implementacja języka Ruby.
Poniższe przykłady ilustruję specyficzne dla implementacji IronPython przykłady użycia języka.
W implementacji IronPython, własne metody, klasy, czy komponenty tworzy się tak samo łatwo jak w każdym innym, wspieranym przez tę platformę, języku programowania. Innymi słowy, każdy komponent stworzony np. w języku C# da się wykorzystać z poziomu języka IronPython bez najmniejszego problemu, a w dodatku bez żadnych dodatkowych warstw pośredniczących, czy konwersji typów danych, co ma bardzo pozytywny wpływ na wydajność i łatwość ich tworzenia.
Kod prostego komponentu w języku C#:
using System; namespace CSharpLib { public class SampleClass { public string SayHello(string name) { return String.Format("Hello, {0}!", name); } } }
Przykład użycia powyższego komponentu z poziomu języka IronPython:
import clr clr.AddReference("CSharpLib.dll") from CSharpLib import SampleClass sc = SampleClass() print sc.SayHello("IronPython")
IronPython umożliwia łatwe wykorzystanie bibliotek standardowych dostarczanych wraz z platformą programistyczną .NET Framework.
Przykład:
import clr clr.AddReference('System.Windows.Forms') from System.Windows.Forms import (Application, Form) form = Form( Text = 'Hello, Windows Forms!' ) Application.Run(form)
Implementacja IronPython dostarcza również wiele mechanizmów umożliwiających osadzanie i wykonywanie tego języka we własnych programach i aplikacjach.
using IronPython.Hosting; namespace PythonHostingSamples { class Program { static void Main(string[] args) { var engine = Python.CreateEngine(); engine.CreateScriptSourceFromString("print 'hello IronPython'"). Execute(); } } }