2017-03-09 18 views
3

C#コードからPython関数を呼び出したいと思います。どのようにすることができ、C#コードからpython.netを使って名前付きパラメータを持つpython関数を呼び出します。

def analyze(source, printout = False, raw = True): 
     # removed for bravity 

そこで質問です:これを行うには、私は次のコード行に示すように、.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の関数は次のようなものである関数を呼び出すためのPythonを使用しました私はFalseに "生"を設定します。私はC#コードからanalyze関数を呼び出します。私は以下を試みたが、うまくいかなかった。

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); 

しかし、何より6つのまたは7というパラメータがある場合、手動ですべてを挿入するために素晴らしいことと変わりません私が望むものたとえば、私が使用しているPythonライブラリには、既定値を持たない12個の名前付きパラメータがあります。私も試してみました を更新し

3. dynamic result = lb.analyze("SomeSource", raw = false); // C# compilation error 
+0

私は間違っていない場合は、構文は '持っ生= false'を、代わりにセミコロンの等しい演算子、する必要がありますあなたはそれを試みた? '動的結果= lb.analyze(" SomeSource "、生= false);' – ironstone13

+0

@ ironstone13はい、私はしましたが、C#コンパイラは私にコンパイルエラーを示しました。 – ash

答えて

3

キーワード引数を適用するには、使用:

lb.analyze("SomeSource", Py.kw("raw", false));

readmeを参照してください。

別のアプローチは、recently pythonnetに追加されたC#のキーワード引数の構文を使用している:

lb.analyze("SomeSource", raw: false);

+0

ありがとう!出来た。 – ash

関連する問題