ironpython
Różnica między Pythonem a IronPython
Szukaj…
Używanie zestawów .Net z kodu Python
Dzięki IronPython możesz uzyskać dostęp do dowolnego zestawu .net, który jest skompilowany przy użyciu tej samej lub niższej wersji niż rdzeń IronPython.
Przykład: importowanie zestawu i klasy .net
from System import Math
Przykład: użycie zaimportowanej klasy:
from System import Math
print Math.Abs(-123)
Możesz także załadować dodatkowe zespoły za pomocą wbudowanego modułu clr .
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Niż po prostu użyj go jako innej biblioteki .net lub python.
IronPython jest napisany w czystym c #
IronPython jest całkowicie napisany przy użyciu zarządzanego kodu .net (c #). Tak więc wszystkie builtin metody i biblioteki Pythona (takie jak next() , int() itp.) Są zapisywane w .net.
Ten przykład pokazuje implementację len() dla listy różnych typów (tylko kilka):
....
public static int len([NotNull]List/*!*/ list) {
return list.__len__();
}
public static int len([NotNull]PythonTuple/*!*/ tuple) {
return tuple.__len__();
}
public static int len([NotNull]PythonDictionary/*!*/ dict) {
return dict.__len__();
}
....
Jeśli potrzebowalibyśmy innego typu, aby odliczyć długość, po prostu dodaj je w Builtin.cs a będzie ono dostępne automatycznie.
Używanie ogólnych w IronPython
IronPython umożliwia używanie klas ogólnych i metod z .NET. Ogólne mogą być używane z taką samą składnią jak dostęp do indeksu. Aby przekazać więcej niż jeden parametr typu, należy je rozdzielić przecinkiem:
l = Dictionary[int, str]()
W ten sposób tworzymy słownik, w którym klucze akceptują tylko integers a wartości muszą być string .
Przykładowe użycie może wyglądać tak
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Wynik
Witaj
Świat
Podczas dodawania nowych elementów zostanie również wykonane sprawdzenie typu:
lst = List[str]()
lst.Add(123)
Traceback (ostatnie połączenie ostatnio):
Plik „<stdin>”, wiersz 1, w
TypeError: oczekiwany str, got int