[Python-de] exec oder watt ?

Michael Scharf Michael.Scharf at kosmos.rhein-neckar.de
Tue Apr 20 16:00:54 EDT 1999


Peter Sommerfeld wrote:
> 
> Folgendes funktioniert:
> 
> def eggs(a):
>     print 'got', a
> 
> exec 'test(a)' in {'test': eggs, 'a': 5}
> 
> Wenn ich aber jetzt nur ein code-object _habe_, wie in
> 
> exec 'test(a)' in {'test': eggs.func_code, 'a': 5}
> 
> meckert der compiler (verständlicherweise). Die Frage
> ist also, wie bekomme ich ein code-object a'la  exec zur
> Ausführung ? Wenn ich mir die variablen in func_code
> anschaue so müßten die eigendlich zureichend sein um
> den code auszuführen (bis auf func_default, aber die sind
> hier nicht nötig).

Baue im exec eine temporaere funktion, der du dann den
func_code zuweisst:

>>> def eggs(a):
...     print 'got',a
... 
>>> exec 'def f():pass\nf.func_code=test\nf(a)' in {'test': eggs.func_code, 'a': 5}
got 5
>>> 

Michael

-- 
     ''''\     Michael Scharf
    ` c-@@     TakeFive Software
    `    >     http://www.TakeFive.com
     \_ V      mailto:Michael_Scharf at TakeFive.co.at





More information about the Python-de mailing list