[Python] Ottenere il codice di una funzione o metodo.

Gabriele Battaglia iz4apu a libero.it
Mar 29 Lug 2014 11:03:09 CEST


Buongiorno.

Esiste la possibilità di interrogare l'interprete facendosi restituire il 
codice di una funzione o del metodo di una classe?

Ad esempio:

def foo(x):
    '''Compie operazioni senza senso'''
    y = x ** 3 + x ** 2
    return y

Quindi posso interrogare la docstring e leggo il commento iniziale della 
funzione, ma se volessi vederne il codice:

    y = x ** 3 + x ** 2
    return y

Come faccio?

Ho cercato in rete ed ho trovato un suggerimento:

inspect.getsource(foo) e inspect.getsourcelines(foo) ma entrambe mi 
restituiscono un traceback di errori che, se serve, posso cercare di incollare 
in una futura mail.

Faccio un passo ulteriore: posso vedere il codice delle funzioni built-in?

Se ad esempio scrivo:

f = 8.12345

Potrei ottenere il codice di f.__str__ e, poi, potrei sovrascriverlo con un 
codice modificato in maniera che tutti i tipi float mi restituiscano ad 
esempio, soltanto 2 cifre decimali?

Gli esempi qui sopra non servono a nulla, se non a scopo di studio, non hanno 
altra funzione se non quella di aiutarmi a meglio comprendere i meccanismi del 
linguaggio.

Grazie per i suggerimenti.
GB. 



Maggiori informazioni sulla lista Python