ironpython
Unterschied zwischen Python und IronPython
Suche…
.Net-Assemblys aus Python-Code verwenden
Mit IronPython können Sie auf jede .net-Assembly zugreifen, die mit derselben oder einer niedrigeren Version als der IronPython-Kern kompiliert wird.
Beispiel: Importieren einer .net-Assembly und einer Klasse
from System import Math
Beispiel: Verwenden einer importierten Klasse:
from System import Math
print Math.Abs(-123)
Sie können auch zusätzliche Baugruppen laden, indem Sie das integrierte clr Modul verwenden.
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Dann verwenden Sie es einfach wie jede andere .net- oder Python-Bibliothek.
IronPython ist in reinem c # geschrieben
IronPython wird vollständig mit verwaltetem .net (c #) Code geschrieben. Daher werden alle builtin Python-Methoden und -Bibliotheken (wie next() , int() usw.) in .net geschrieben.
Dieses Beispiel zeigt die Implementierung von len() für eine Liste verschiedener Typen (nur einige):
....
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__();
}
....
Wenn wir einen anderen Typ zum Abzählen der Länge benötigen, fügen Sie sie einfach in Builtin.cs und sie wird automatisch verfügbar sein.
Verwendung von Generika in IronPython
IronPython ermöglicht die Verwendung generischer Klassen und Methoden aus dem .NET-Framework. Generics können mit derselben Syntax wie der Zugriff auf einen Index verwendet werden. Um mehrere Typparameter übergeben zu können, müssen sie mit einem Komma getrennt werden:
l = Dictionary[int, str]()
Auf diese Weise erstellen wir ein Wörterbuch, in dem Schlüssel nur integers akzeptieren und die Werte eine string .
Eine Beispielnutzung könnte so aussehen
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Ausgabe
Hallo
Welt
Beim Hinzufügen neuer Elemente wird auch die Typüberprüfung durchgeführt:
lst = List[str]()
lst.Add(123)
Traceback (letzter Anruf zuletzt):
Datei "<stdin>", Zeile 1, in
TypeError: erwartete str, wurde int