ironpython
Verschil tussen Python en IronPython
Zoeken…
.Net-assemblages gebruiken vanuit Python-code
Met IronPython hebt u toegang tot elke .net-assemblage die is samengesteld met dezelfde of een lagere versie dan de IronPython-kern.
Voorbeeld: aa .net-assembly en -klasse importeren
from System import Math
Voorbeeld: een geïmporteerde klasse gebruiken:
from System import Math
print Math.Abs(-123)
U kunt ook extra merken laden met behulp van de ingebouwde clr module.
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Gebruik hem dan gewoon als elke andere .net- of pythonbibliotheek.
IronPython is geschreven in pure c #
IronPython is volledig geschreven met beheerde .net (c #) code. Dus alle builtin python-methoden en bibliotheken (zoals next() , int() , etc.) zijn writtin in .net.
Dit voorbeeld toont de implementatie van len() voor een lijst met verschillende typen (slechts enkele):
....
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__();
}
....
Als we een ander type nodig hebben om de lengte af te tellen, voegt u ze gewoon toe in Builtin.cs en het zal automatisch beschikbaar zijn.
Generics gebruiken binnen IronPython
Met IronPython kunnen generieke klassen en methoden uit het .net-framework worden gebruikt. Generics kunnen worden gebruikt met dezelfde syntaxis als toegang tot een index. Als u meer dan één typeparameter wilt doorgeven, moeten ze worden gescheiden door een komma:
l = Dictionary[int, str]()
Op die manier maken we een woordenboek waarin sleutels alleen integers accepteert en de waarden een string moeten zijn.
Een voorbeeldgebruik kan er zo uitzien
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
uitgang
Hallo
Wereld
Bij het toevoegen van nieuwe items wordt ook typecontrole uitgevoerd:
lst = List[str]()
lst.Add(123)
Hertraceren (meest recente oproep als laatste)
Bestand "<stdin>", regel 1, in
TypeError: verwachte str, kreeg int