2016-08-31 9 views
0

実際にスクリプトを実行せずにスクリプトライターによって定義されたグローバル変数を取得する方法はありますか?例えば、コードをコンパイルしてくださいIronPythonスクリプトを実行しないで変数を取得する

+1

いいえ、何かがスクリプトを解釈する必要があるためです。グローバル変数の値は、スクリプトの横のどこにも格納されません。 –

+0

@MatthiasBurgerスクリプトを実際に実行する前にユーザーからの入力を読み込む必要があります。これは、ユーザーに単一の定義のための追加スクリプトを作成する必要があることを意味します。作業。私は本当にIronPythonのソースコードにプラグインすることを避けたかったが、これは今どこに行かなければならないのだろうと思う。とにかく私の計画は、実行時に実行を制限する実行時に変数を追加することです。 私はユーザにconst文字列を定義させてから、それを取得できないようにします(私の痛みを理解してもらいたい) – Hristo

+0

another writeグローバル変数が設定ファイル(config.pyなど)に設定されている場所で実行し、実行前に 'from config import *'を読んで実際のスクリプトからインポートするスクリプトは、問題ではないはずです。 'myglobal = 'test''のように保存されたconfig.py変数にしかありません –

答えて

1

私が正しく理解していれば、本質的にスクリプトの最初の部分だけを実行してから、何かを実行したいと思っています。私がすることは、グローバル変数の代わりにスコープ変数を操作することを考えると、次のようになります。

[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)); 
    } 
関連する問題