我想用C#代码调用python函数。为此,我使用Python for .NET来调用函数,如以下代码行所示
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
所以问题是,如何设置" raw"当我从C#代码调用analyze函数时,到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个带有默认值的命名参数,包括另外两个没有默认值的参数。
已更新 我也尝试过:
3. dynamic result = lb.analyze("SomeSource", raw = false); // C# compilation error
答案 0 :(得分:3)
要应用关键字参数,请使用:
lb.analyze("SomeSource", Py.kw("raw", false));
请参阅readme。
另一种方法是使用添加到pythonnet的<{3}}的C#关键字参数语法:
lb.analyze("SomeSource", raw: false);