.NET 爱python——pythonnet模块使用

.NET 爱python——pythonnet模块使用_第1张图片

前言:如何更好地进行python与.NET之间的交互式编程?在之前,我们常常使用IronPython,在.NET平台上使用python开发,但是IronPython只支持python2.7版本,而且不在维护,pythonnet提供了一个更好的解决方案,它提供了二者的交互,可以在编写python的时候与C#交互,调用C#,也可以在编写.NET的时候,将python代码嵌入在C#里面。

详细信息参考:https://github.com/pythonnet/pythonnet

一、python中调用.NET代码

首先需要安装这个python库:

pip install pythonnet

通过python net库我们可以调用.NET的命名空间就像python里面的模块一样那样调用。

import clr
from System import String
from System.Collections import *   # 这是C#的命名空间,就像python本身一样

加载.NET的程序集,需要用到clr的AddReference函数来实现

import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form

二、在.NET中调用python代码

举一个简单的例子

static void Main(string[] args)
{
    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy");
        Console.WriteLine(np.cos(np.pi * 2));

        dynamic sin = np.sin;
        Console.WriteLine(sin(5));

        double c = np.cos(5) + sin(5);
        Console.WriteLine(c);

        dynamic a = np.array(new List { 1, 2, 3 });
        Console.WriteLine(a.dtype);

        dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32);
        Console.WriteLine(b.dtype);

        Console.WriteLine(a * b);
        Console.ReadKey();
    }
}
/***Output:
1.0
-0.958924274663
-0.6752620892
float64
int32
[  6.  10.  12.]

***/

详细教程参考:

https://github.com/pythonnet/pythonnet/wiki

你可能感兴趣的:(C#,C#之.NETCore,python)