我想從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