2012-10-24 12 views
6

Voglio poter esaminare e tracciare il codice sorgente Python per vedere come funzionano le cose e per risolvere dubbi su caratteristiche che non sono esplicitamente documentate nel documento di riferimento.Provare a iniziare a tracciare le caratteristiche e il comportamento di Python tramite il codice sorgente

Mi piacerebbe avere alcune informazioni di partenza su come procedere, perché è piuttosto travolgente. Posso leggere C, quindi ho questo per me. Oltre a ciò, il compito sembra un po 'intimidatorio senza almeno una minima quantità di guida.

Ad esempio, supponiamo di voler documentare come il riferimento di attributo sia implementato in Python. Come farei a tracciare cosa succede quando un'espressione di riferimento all'attributo è presente in un programma Python?

Forse una panoramica su come è organizzato il codice sorgente e su ciò che ciascuna parte sarebbe utile, insieme ad alcuni esempi "walk = thru", come il caso "riferimento attributo".

Ho cercato informazioni su questo ma non sembra esserci molto.

risposta

1

Forse un buon debugger Python potrebbe essere d'aiuto? Vorrei provare a utilizzare lo PyDev plugin for Eclipse. Questo ti aiuterà almeno a rintracciare quali speciali metodi Python (come __getattr__() o __setattr__()) vengono chiamati quando fai riferimento ad un attributo di una classe. Se devi approfondire, puoi guardare lo Python C API o anche lo Python C Source Code.

+0

OP sta chiedendo su un intro alle sorgenti Python C! – XORcist

+0

Grazie, non avevo pensato di usare un debugger per questo. Daremo un'occhiata a questa possibilità (anche se al momento non sto usando Eclipse.) Per quanto riguarda l'API C e il codice sorgente, sarebbe sicuramente l'ideale. Sto solo cercando il modo meno doloroso per iniziare (c'è qualcosa di simile?) –

+2

Sembra che tu possa eseguire il debugging al livello sorgente C usando [GDB con Python] (http://wiki.python.org/moin/DebuggingWithGdb) – Josh

1

C'è un modulo di traccia nella libreria standard python. Ha diverse modalità, e può essere utilizzato per stampare ogni riga di codice Python come viene eseguito in questo modo:

python -m trace -t myscript.py 

Vedi http://docs.python.org/library/trace.html

+0

Questo è eccellente, grazie. Vado a dare un'occhiata a questo subito e vedere quali informazioni posso raccogliere con esso. L'ossessivo compulsivo in me vorrebbe comunque sapere come riuscire a scavare nel codice. Non sono sicuro che sarebbe un tentativo pratico, ma posso vederlo essere così solo per divertimento. –

+0

Questa è una prova. È sicuramente utile, ma non sono sicuro che abbia il livello di dettaglio richiesto. Per esempio, non sto ottenendo chiamate a metodi speciali Python (come quando istanziate un oggetto e così via). Forse c'è un'opzione che potete impostare in questa traccia, anche se non ne ho vista una subito. Darò un'occhiata. –

Problemi correlati