|
|
|
La libreria di riferimento di Python |
|
|
|
Il modulo dis permette l'analisi del bytecode Python
tramite la sua disassemblatura. Dato che non esiste un assemblatore Python, questo
modulo definisce il linguaggio assembly Python. Il bytecode di
Python che questo modulo utilizza come input viene definito nel file
Include/opcode.h ed utilizzato sia dal compilatore che dall'interprete.
Esempio: Data la funzione myfunc:
def myfunc(alist):
return len(alist)
il seguente comando può venire utilizzato per ottenere il codice
disassemblato di myfunc():
>>> dis.dis(myfunc)
2 0 LOAD_GLOBAL 0 (len)
3 LOAD_FAST 0 (alist)
6 CALL_FUNCTION 1
9 RETURN_VALUE
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
(il ``2'' è il numero di riga).
Il modulo dis definisce le seguenti funzioni e costanti:
-
Disassembla l'oggetto bytesource. bytesource può
denotare un modulo, una classe, un metodo, una funzione oppure un
oggetto codice. Nel caso di un modulo vengono disassemblate tutte le
funzioni. Nel caso di una classe vengono disassemblati tutti i metodi. Per una
singola sequenza di codice stampa una riga per ogni istruzione
bytecode. Se nessun oggetto viene passato come parametro,
disassembla l'ultima traceback.
-
Disassembla la funzione in cima alla pila della traceback,
utilizzando l'ultima traceback se non ne viene specificata nessuna.
Viene indicata l'istruzione che ha causato l'eccezione.
disassemble( |
code[, lasti]) |
-
Disassembla un oggetto codice, indicando l'ultima istruzione
se lasti viene definito. L'output viene suddiviso nelle seguenti
colonne:
- il numero di riga, per la prima istruzione di ogni riga
- l'istruzione corrente, indicata da "-->",
- un'istruzione con etichetta, indicata da ">
>
",
- l'indirizzo dell'istruzione,
- il nome del codice dell'operazione,
- i parametri dell'operazione, e
- l'interpretazione dei parametri fra parentesi.
Il parametro interpretazione identifica nomi di variabili globali e locali,
valori di costanti, destinazioni di operazioni di salto e operatori di confronto.
-
Sinonimo della funzione disassemble. È più facile da
scrivere e mantiene la compatibilità con le versioni precedenti di
Python.
- opname
-
Sequenza di nomi di operazioni, indicizzabile usando il
bytecode.
- cmp_op
-
Sequenza di tutti i nomi delle operazioni di confronto.
- hasconst
-
Sequenza di bytecode che hanno un parametro costante.
- hasfree
-
Sequenza di bytecode che accedono ad una variabile libera.
- hasname
-
Sequenza di bytecode che accede ad un attributo tramite il nome.
- hasjrel
-
Sequenza di bytecode che ha una salto verso una destinazione
relativa.
- hasjabs
-
Sequenza di bytecode che ha una salto verso una destinazione
assoluta.
- haslocal
-
Sequenza di bytecode che accede ad una variabile locale.
- hascompare
-
Sequenza di bytecode di operazioni booleane.
|
|
|
La libreria di riferimento di Python |
|
|
|
Release 2.3.4, documentation updated on 21. maggio 2005.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.