IronPython: Cara mengakses penelusuran kembali variabel lokal

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

Izinkan saya ulangi: Saya ingin mendapatkan variabel lokal dari fungsi tersebut, di mana eksekusi python saat ini berada (fungsi yang mengelilingi baris frame.f_lineno).


person ulrichb    schedule 09.10.2009    source sumber


Jawaban (1)


Anda dapat mengakses frame.f_locals yang memungkinkan Anda mendapatkan/mengatur semua variabel.

person Dino Viehland    schedule 09.10.2009
comment
silakan ikuti kode di atas, ... frame.f_locals TIDAK berisi penduduk setempat - person ulrichb; 10.10.2009
comment
Jika saya mengubah OnTraceback untuk mengembalikannya sendiri, saya melihat penduduk lokal di dalam fungsi persegi - meskipun global tampaknya tidak ada. - person Dino Viehland; 10.10.2009