Using Python Functions from CSharp

The following example (adapted from code posted to the IronPython Mailing list by Dino Viehland), creates a Python function from code. That function is then used from C#.

It uses the IronPython 2 hosting API.

using System; using Microsoft.Scripting; using IronPython.Hosting;

namespace IP2Hosting {   class Program {       static void Main {           PythonEngine pe = PythonEngine.CurrentEngine; string code = "lambda x, y: x > y"; Function func = pe.EvaluateAs>(code);

// Writes False to the console bool result = func(2, 3); Console.WriteLine(result.ToString);

// Writes True to the console result = func(3, 2); Console.WriteLine(result.ToString); }   } }

You can also do the same thing from within IronPython. As you can only have one IronPython engine active at a time with IronPython 2, this isn't directly useful - *but* it does allow you to experiment with the API from the interactive interpreter which can be very useful.

import clr clr.AddReference('Microsoft.Scripting') clr.AddReference('IronPython')

from IronPython.Hosting import PythonEngine from Microsoft.Scripting.Utils import Function

pe = PythonEngine.CurrentEngine f = pe.EvaluateAs[Function[object, object, bool]]('lambda x, y: x > y')

f(2, 3) f(3, 2)

Back to Contents.