ironpython
Differenza tra Python e IronPython
Ricerca…
Usando gli assembly .Net dal codice Python
Con IronPython puoi accedere a qualsiasi assembly .net che viene compilato utilizzando la stessa versione o una versione precedente rispetto al core IronPython.
Esempio: importazione di un assembly .net e classe
from System import Math
Esempio: utilizzo di una classe importata:
from System import Math
print Math.Abs(-123)
È anche possibile caricare ulteriori assiemi utilizzando il modulo clr incorporato.
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Quindi basta usarlo come qualsiasi altra libreria .net o python.
IronPython è scritto in puro C #
IronPython è scritto completamente usando il codice gestito .net (c #). Così tutti i builtin metodi Python e le librerie (come next() , int() , ecc) sono writtin in .NET.
Questo esempio mostra l'implementazione di len() per un elenco di tipi diversi (solo alcuni):
....
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__();
}
....
Se avessimo bisogno di qualche altro tipo per contare la durata, aggiungili in Builtin.cs e sarà disponibile automaticamente.
Usare i generici in IronPython
IronPython consente di utilizzare classi e metodi generici dal framework .net. Generics può essere utilizzato con la stessa sintassi dell'accesso a un indice. Per passare più di un parametro di tipo, devono essere separati da una virgola:
l = Dictionary[int, str]()
In questo modo creiamo un dizionario in cui le chiavi accettano solo integers e i valori devono essere una string .
Un esempio di utilizzo potrebbe essere simile a questo
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Produzione
Ciao
Mondo
Quando si aggiungono nuovi articoli, verrà eseguito anche il controllo del tipo:
lst = List[str]()
lst.Add(123)
Traceback (ultima chiamata più recente):
File "<stdin>", riga 1, in
TypeError: atteso str, ottenuto int