ironpython
Skillnaden mellan Python och IronPython
Sök…
Använda .Net-enheter från Python-kod
Med IronPython kan du komma åt alla .net-enheter som kompileras med samma eller en lägre version än IronPython-kärnan.
Exempel: Importera aa .net-montering och klass
from System import Math
Exempel: Använda en importerad klass:
from System import Math
print Math.Abs(-123)
Du kan också ladda ytterligare enheter genom att använda den inbyggda clr modulen.
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Använd bara det som något annat .net- eller pythonbibliotek.
IronPython är skriven i ren c #
IronPython skrivs fullständigt med hanterad .net (c #) -kod. Så alla builtin pythonmetoder och bibliotek (som next() , int() , etc.) skrivs in i .net.
Detta exempel visar implementeringen av len() för en lista över olika typer (endast några få):
....
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__();
}
....
Om vi skulle behöva någon annan typ för att räkna längden, lägg bara till dem i Builtin.cs så kommer den att vara tillgänglig automatiskt.
Använda generik inom IronPython
IronPython gör det möjligt att använda generiska klasser och metoder från .net-ramverket. Generics kan användas med samma syntax som åtkomst till ett index. För att skicka mer än en typparameter måste de separeras med komma:
l = Dictionary[int, str]()
På så sätt skapar vi en ordlista där tangenter bara accepterar integers och värdena måste vara en string .
En exempelanvändning kan se ut så här
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Produktion
Hej
Värld
När du lägger till nya objekt kommer typkontroll också att utföras:
lst = List[str]()
lst.Add(123)
Traceback (senaste samtalet senast):
Fil "<stdin>", rad 1, in
TypeError: förväntat str, fick int