C#调用Python(一)

python文件中未引入其他包、模块

以下方法不适用于pyhton 文件有第三方包、模块,有第三方包,模块的实现方法,请戳这里→https://www.cnblogs.com/zhuanjiao/p/12007176.html

一、安装IronPython包,使用的是2.7.5版本

 二、源码

 2.1 python 源码,实现一个快速排序功能

def quickSort(lyst):
    quickSortHelper(lyst, 0, len(lyst) - 1)
    return lyst


def quickSortHelper(lyst, left, right):
    if left < right:
        pivotLocation = partition(lyst, left, right)
        quickSortHelper(lyst, left, pivotLocation - 1)
        quickSortHelper(lyst, pivotLocation + 1, right)

def swap(lst, i, j):
    temp = lst[i]
    lst[i] = lst[j]
    lst[j] = temp


def partition(lyst, left, right):
    middle = (left + right) // 2
    pivot = lyst[middle]
    lyst[middle] = lyst[right]
    lyst[right] = pivot
    boundary = left
    for index in range(left, right):
        if lyst[index] < pivot:
            swap(lyst, index, boundary)
            boundary += 1
    swap(lyst, right, boundary)
    return boundary

  2.2 C#源码

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

namespace TestClass
{
    public class CSharpCallPython
    {
        public int[] Sort(int[] arr)
        {
            string path = @"D:PyCharmsourceStudy	est.py";
            ScriptRuntime pyRuntime = Python.CreateRuntime();
            dynamic py = pyRuntime.UseFile(path);
            return py.quickSort(arr);
        }
    }
}
var arr = new CSharpCallPython().Sort(new int[] { 45, 12, 87, 2, 204, 3 });
            foreach (var item in arr)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();

执行结果:

原文地址:https://www.cnblogs.com/zhuanjiao/p/12006960.html