Questa sezione mostra vari semplici esempi di AST per codice sorgente Python. Gli esempi mostrano come usare la funzione parse(), come si presenta il ``repr'' di un AST e come accedere agli attributi di un nodo AST.
Il primo modulo definisce una singola funzione. Si assuma che sia memorizzata in /tmp/doublelib.py.
"""Questo è un modulo di esempio. Questa è la docstring. """ def double(x): "Restituisce due volte l'argomento" return x * 2
Nella sessione interattiva dell'interprete qui sotto, per favorire la leggibilità, vengono riformattate le lunghe repr dell'AST. Le repr AST usano nomi di classi non qualificate. Se si vuole creare un'istanza a partire da una repr, si devono importare i nomi della classe dal modulo compiler.ast.
>>> import compiler >>> mod = compiler.parseFile("/tmp/doublelib.py") >>> mod Module('Questo è un modulo di esempio.\n\nQuesta è la docstring.\n', Stmt([Function('double', ['x'], [], 0, 'Restituisce due volte l'argomento', Stmt([Return(Mul((Name('x'), Const(2))))]))])) >>> from compiler.ast import * >>> Module('Questo è un modulo di esempio.\n\nQuesta è la docstring.\n', ... Stmt([Function('double', ['x'], [], 0, 'Restituisce due volte l'argomento', ... Stmt([Return(Mul((Name('x'), Const(2))))]))])) Module('Questo è un modulo di esempio.\n\nQuesta è la docstring.\n', Stmt([Function('double', ['x'], [], 0, 'Restituisce due volte l'argomento', Stmt([Return(Mul((Name('x'), Const(2))))]))])) >>> mod.doc 'Questo è un modulo di esempio.\n\nQuesta è la docstring.\n' >>> for node in mod.node.nodes: ... print node ... Function('double', ['x'], [], 0, 'Restituisce due volte l'argomento', Stmt([Return(Mul((Name('x'), Const(2))))])) >>> func = mod.node.nodes[0] >>> func.code Stmt([Return(Mul((Name('x'), Const(2))))])
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.