0
実際にスクリプトを実行せずにスクリプトライターによって定義されたグローバル変数を取得する方法はありますか?例えば、コードをコンパイルしてくださいIronPythonスクリプトを実行しないで変数を取得する
実際にスクリプトを実行せずにスクリプトライターによって定義されたグローバル変数を取得する方法はありますか?例えば、コードをコンパイルしてくださいIronPythonスクリプトを実行しないで変数を取得する
私が正しく理解していれば、本質的にスクリプトの最初の部分だけを実行してから、何かを実行したいと思っています。私がすることは、グローバル変数の代わりにスコープ変数を操作することを考えると、次のようになります。
[Test]
public void TestPythonDymanicCall()
{
string customScript = @"
scriptScopeVar1 = 3
def executeSomething():
global scriptScopeVar1
scriptScopeVar1 = scriptScopeVar1 + 1
".unindent();
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
engine.Execute(customScript, scope);
Assert.AreEqual(3, engine.Execute("scriptScopeVar1", scope));
engine.Execute("executeSomething()", scope);
Assert.AreEqual(4, engine.Execute("scriptScopeVar1", scope));
}
いいえ、何かがスクリプトを解釈する必要があるためです。グローバル変数の値は、スクリプトの横のどこにも格納されません。 –
@MatthiasBurgerスクリプトを実際に実行する前にユーザーからの入力を読み込む必要があります。これは、ユーザーに単一の定義のための追加スクリプトを作成する必要があることを意味します。作業。私は本当にIronPythonのソースコードにプラグインすることを避けたかったが、これは今どこに行かなければならないのだろうと思う。とにかく私の計画は、実行時に実行を制限する実行時に変数を追加することです。 私はユーザにconst文字列を定義させてから、それを取得できないようにします(私の痛みを理解してもらいたい) – Hristo
another writeグローバル変数が設定ファイル(config.pyなど)に設定されている場所で実行し、実行前に 'from config import *'を読んで実際のスクリプトからインポートするスクリプトは、問題ではないはずです。 'myglobal = 'test''のように保存されたconfig.py変数にしかありません –