2009-10-09 7 views
2
private ScriptEngine pe; 
private ScriptScope scope; 

private void button1_Click(object sender, EventArgs e) 
{ 
    pe = Python.CreateEngine(); 
    scope = pe.CreateScope(); 

    pe.Runtime.SetTrace(OnTraceback); 
    pe.Execute(@" 
def square(x): 
    s = x*x 
    return s 

a = square(2) + (3) 
print ""hello world "" + str(a) 
", scope); 
} 

private TracebackDelegate OnTraceback(TraceBackFrame frame, string result, object payload) 
{ 
    //How can I access the local variables of the current function? 

    return OnTraceback; 
} 

Je le répète: je veux les variables locales de la fonction, où l'exécution de python est actuellement (la fonction ligne entourant frame.f_lineno).IronPython: Comment accéder à retracer les variables locales

Répondre

1

Vous pouvez accéder à frame.f_locals qui devrait vous permettre d'obtenir/définir toutes les variables.

+0

veuillez passer par le code ci-dessus, ... frame.f_locals ne contient pas les locaux – ulrichb

+0

Si je change OnTraceback pour revenir à lui-même, je vois les locaux à l'intérieur des fonctions carrées - bien que les globals semblent manquer. –