我想从C#代码中调用python函数。要做到这一点,我用的Python .NET调用功能,如图下面的代码行从C#代码中使用python.net调用具有命名参数的python函数
using System;
using Python.Runtime;
public class Test{
public static void Main(){
using(Py.GIL()){
dynamic lb = Py.Import("lb");
dynamic result = lb.analyze("SomeValue");
Console.WriteLine(result);
}
}
}
Python函数是这样的:
def analyze(source, printout = False, raw = True):
# removed for bravity
所以现在的问题是,如何能当我从C#代码调用分析函数时,我将“raw”设置为False
。我尝试了以下,但它没有奏效。
1. dynamic result = lb.analyze("SomeSource", raw : false); // No result
2. dynamic result = lb.analyze("SomeSource", @"raw = False"); // No result
我知道这是很容易通过这样做:
dynamic result = lb.analyze("SomeSource", False, False);
但是如果有超过六七命名的参数,它不会是巨大的,手动将其完全与变革我想要的那个。例如,我正在使用的python库有12个具有默认值的named参数,其中包含两个没有默认值的参数。
更新 我也试过:
3. dynamic result = lb.analyze("SomeSource", raw = false); // C# compilation error
如果我没有记错语法应'原始= FALSE',等于操作员而不是分号,有你试过了吗? 'dynamic result = lb.analyze(“SomeSource”,raw = false);' – ironstone13
@ ironstone13是的,但是C#编译器向我展示了一个编译错误。 – ash