Hallo,
mit compile kann man Zeichenketten kompilieren und mittels exec/eval ausführen. Meine Frage ist, ob das auch mit Funktionen, Klassen oder Module geht.
Beispiel:
txt = """
def a():
print 1
"""
func = compile(txt, '/tmp/comp.err', 'exec')
Zwar kann ich ein exec(func) oder auch eval(func) ausführen, aber es passiert nichts. ein exec.(func.a()) scheitert.
Wie kann ich Zeichenketten kompilieren ohne sie als Datei speichern und nachträglich importieren zu müssen?
Bin für jeden Tipp dankbar.
Ciao
Matthias
built_in compile und Funktionen/Klassen/Module
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Code: Alles auswählen
>>> code = compile('''
... def test():
... return "Hello World"''', 'test.py', 'exec')
>>> d = {}
>>> exec code in d
>>> d['test']()
'Hello World'
TUFKAB – the user formerly known as blackbird