[Python-de] exec oder watt ?

Martin v. Loewis martin at mira.isdn.cs.tu-berlin.de
Wed Apr 21 00:58:10 EDT 1999


> exec 'test(a)' in {'test': eggs, 'a': 5}

Das ist das gleiche wie

test = eggs
test(5)

Funktioniert auch.

> exec 'test(a)' in {'test': eggs.func_code, 'a': 5}

Das ist das gleiche wie

eggs.func_code(5)

Funktioniert auch nicht.

> Die Frage ist also, wie bekomme ich ein code-object a'la exec zur
> Ausführung ?

Kommt aufs Codeobjekt an.

c = compile("print 67","","single")
exec c

funktioniert. Schwierig wird's mit Argumenten, das ist offenbar nicht
unterstützt. Der einzige Weg, den ich gefunden hab, geht über module
new:

code = eggs.func_code
import new
f = new.function(code, {}, "tmp_f", ("a",))
apply (f, (5,))

Das ist allerdings wüste Magie.

Ciao,
Martin





More information about the Python-de mailing list