使用 C# 代码中的 python.net 调用带有命名参数的 python 函数
Call a python function with named parameter using python.net from a C# code
我想从 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
所以问题是,当我从 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 个带默认值的命名参数,包括另外两个没有默认值的参数。
已更新
我也试过:
3. dynamic result = lb.analyze("SomeSource", raw = false); // C# compilation error
我想从 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
所以问题是,当我从 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 个带默认值的命名参数,包括另外两个没有默认值的参数。
已更新 我也试过:
3. dynamic result = lb.analyze("SomeSource", raw = false); // C# compilation error