18.1.6.1 Emulazione di compile()

Anche se si possono eseguire molte operazioni utili fra l'analisi e la generazione del bytecode, la cosa più semplice è non fare nulla: a tal proposito, l'uso del modulo parser per produrre una struttura di dati intermedia equivale al codice:

>>> code = compile('a + 5', 'file.py', 'eval')
>>> a = 5
>>> eval(code)
10

L'operazione equivalente, utilizzando il modulo parser, richiede leggermente più tempo e permette all'albero di analisi interno intermedio di essere gestito come un oggetto AST.

>>> import parser
>>> ast = parser.expr('a + 5')
>>> code = ast.compile('file.py')
>>> a = 5
>>> eval(code)
10

Un'applicazione che richieda sia gli oggetti AST che gli oggetti codice può raggruppare questo codice in funzioni già disponibili:

import parser

def load_suite(source_string):
    ast = parser.suite(source_string)
    return ast, ast.compile()

def load_expression(source_string):
    ast = parser.expr(source_string)
    return ast, ast.compile()

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.