ironpython
Diferencia entre Python y IronPython
Buscar..
Usando ensamblados .Net desde el código de Python
Con IronPython puede acceder a cualquier ensamblaje .net que se compile utilizando la misma versión o una versión inferior a la del núcleo de IronPython.
Ejemplo: Importar un ensamblaje y una clase aa .net
from System import Math
Ejemplo: Usando una clase importada:
from System import Math
print Math.Abs(-123)
También puede cargar ensamblajes adicionales utilizando el módulo clr incorporado.
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Simplemente utilícelo como cualquier otra biblioteca .net o python.
IronPython está escrito en c puro
IronPython está completamente escrito usando el código .net (c #) administrado. Por lo tanto, todos los métodos y bibliotecas de Python builtin (como next() , int() , etc.) están escritos en .net.
Este ejemplo muestra la implementación de len() para una lista de diferentes tipos (solo unos pocos):
....
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__();
}
....
Si necesitaríamos algún otro tipo para contar la longitud, solo agréguelos en Builtin.cs y estará disponible automáticamente.
Usando genéricos dentro de IronPython
IronPython permite utilizar clases y métodos genéricos desde el marco .net. Los genéricos se pueden utilizar con la misma sintaxis que para acceder a un índice. Para pasar más de un parámetro de tipo, se deben separar con una coma:
l = Dictionary[int, str]()
De esa manera creamos un diccionario donde las claves solo aceptan integers y los valores deben ser una string .
Un ejemplo de uso podría verse así
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Salida
Hola
Mundo
Al agregar nuevos elementos, la verificación de tipos también se realizará:
lst = List[str]()
lst.Add(123)
Rastreo (llamadas recientes más última):
Archivo "<stdin>", línea 1, en
TypeError: esperado str, got int