python與C#交互

1.python調用C#的dll

C#代碼
//放在py文件同級目錄下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace simple
{
    public class Class1
    {
        public static string StaticFun()
        {
            return "靜態方法";
        }

        public static string Fun(string a)
        {
            return "普通方法" + a;
        }

    }
}
python代碼

這裏的clr是pythonnet模塊的別名,不是clr模塊,能夠先卸載clr模塊 pip uninstall clr。可能會有紅色波浪線提示,不用管,運行不報錯便可。python

import clr
clr.AddReference("simple")
from simple import *
a = Class1.StaticFun()
b = Class1.Fun('b')
c = Class1().Fun('c')
print(a)
print(b)
print(c)

2.C#調用python代碼

C#代碼

須要安裝IronPython,VS中安裝步驟:工具-NuGet包管理器-管理解決方案的NuGet程序包web

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

namespace simple
{
    public class Class1
    {
        public void Test()
        {
            ScriptRuntime pyRuntime = Python.CreateRuntime();	 //建立一下運行環境
		    dynamic obj = pyRuntime.UseFile("test1.py"); 		//調用一個Python文件
		    string dd = obj.main('hello world');				//調用腳本文件中對應的函數
        }
    }
}
python代碼
//放在\bin\Debug目錄下
#coding = utf-8
def main(arr):
	return arr
注意

當py文件須要第三方模塊的時候,在C#中也要引入第三方模塊,不然會報錯No module named randomdom

from random import randint  # 隨機函數
def main(arr):
	try:
		return str(randint(5, 10))
	except Exception as err:
		return str(err)