ironpython
Разница между Python и IronPython
Поиск…
Использование .Net-сборок из кода Python
С IronPython вы можете получить доступ к любой сборке .net, которая скомпилирована с использованием той же или более низкой версии, что и ядро IronPython.
Пример: импорт сборки и класса aa .net
from System import Math
Пример. Использование импортированного класса:
from System import Math
print Math.Abs(-123)
Вы также можете загрузить дополнительные сборки, используя встроенный модуль clr .
import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.
Вместо этого используйте его как любую другую .net или библиотеку python.
IronPython написан в чистом c #
IronPython полностью написан с использованием управляемого .net (c #) кода. Таким образом, все builtin методы и библиотеки python (такие как next() , int() и т. Д.) Записываются в .net.
В этом примере показана реализация len() для списка разных типов (всего несколько):
....
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__();
}
....
Если нам понадобится какой-то другой тип для подсчета длины, просто добавьте их в Builtin.cs и он будет доступен автоматически.
Использование дженериков в IronPython
IronPython позволяет использовать общие классы и методы из .NET Framework. Дженерики могут использоваться с тем же синтаксисом, что и доступ к индексу. Для передачи нескольких параметров типа они должны быть разделены запятой:
l = Dictionary[int, str]()
Таким образом, мы создаем словарь, в котором ключи принимают только integers а значения должны быть string .
Пример использования может выглядеть так:
from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
print
Выход
Привет
Мир
При добавлении новых элементов также будет проверяться тип:
lst = List[str]()
lst.Add(123)
Traceback (последний последний вызов):
Файл «<stdin>», строка 1, в
TypeError: expected str, got int