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.