3

Iron-Python バイナリの Python エンジンを使用して、いくつかの流体力学関連の式を評価しようとしています。次のコードに到達しました。

ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString("import math", SourceCodeKind.AutoDetect);
source.Execute();
source = engine.CreateScriptSourceFromString("2*sin (2)", SourceCodeKind.AutoDetect);
button1.Text = source.Execute<float>().ToString();

実行しようとすると、次のエラーが発生します: Global name 'sin' not defined. 私も試しMath.sin()ましたが、成功しませんでした。何か案は?

4

1 に答える 1

3

グローバルスコープですべての数学関数にアクセスできるようにしたい場合は、from math import *代わりに使用できます(式は本質的に数学であるため、これは便利です)。import math

ScriptScope複数のステートメントを実行できるように、グローバル状態を格納するも作成する必要があります。

ScriptScope scope = engine.CreateScope();

ScriptSource source = engine.CreateScriptSourceFromString("from math import *", SourceCodeKind.AutoDetect);
source.Execute(scope);

source = engine.CreateScriptSourceFromString("2*sin (2)", SourceCodeKind.AutoDetect);
button1.Text = source.Execute<float>(scope).ToString();

C# からオブジェクトをスコープに入れることもできます。

scope.SetVariable("x", 0.577);
于 2012-10-15T17:20:35.817 に答える