Come è possibile esaminare i valori degli argomenti delle funzioni all'interno della chiamata sys.settrace? Sembra che io abbia la possibilità di produrre praticamente tutto (righe, nomi di file, stacktraces, valori di ritorno, ecc.) Eccetto gli argomenti. C'è una soluzione che mi consenta di monitorare anche i valori degli argomenti delle funzioni?Argomenti della funzione di stampa in sys.settrace in python
7
A
risposta
9
È possibile utilizzare la combinazione di oggetti codice e oggetti frame.
Vedere per la descrizione di questi nello Python Data-Model Reference.
import sys
def fn(frame, msg, arg):
if msg != 'call': return
# Filter as appropriate
if frame.f_code.co_filename.startswith("/usr"): return
print("Called", frame.f_code.co_name)
for i in range(frame.f_code.co_argcount):
name = frame.f_code.co_varnames[i]
print(" Argument", name, "is", frame.f_locals[name])
sys.settrace(fn)
def hai(a, b, c):
print(a, b, c)
hai("Hallo", "Welt", "!")
La cosa importante da capire è che
- possiamo vedere tutte le variabili locali nel telaio come
f_locals
. - Possiamo estrarre i nomi delle variabili nell'elenco parametri da
f_code.co_varnames
.
Problemi correlati
- 1. stampa una funzione in Python?
- 2. funzione di stampa python in tempo reale
- 3. È possibile nascondere gli argomenti della funzione Python in Sphinx?
- 4. Scala: Decomposing tuple in argomenti della funzione
- 5. Argomenti della riga di comando in python.
- 6. Utilizzo degli argomenti della funzione in update.formula
- 7. python: stampa in orizzontale invece della stampa predefinita corrente
- 8. argomenti della funzione Guava
- 9. argomenti della riga di comando gem/git-style in Python
- 10. Stampa argomenti della riga di comando con argparse?
- 11. argomenti Template vs argomenti della funzione
- 12. Che cool hack può essere fatto usando sys.settrace?
- 13. Imposta la firma della funzione in Python
- 14. Python - Ottieni gli argomenti della funzione originale nel decoratore
- 15. Indirizzo di stampa della funzione membro virtuale
- 16. Impostazione degli argomenti di default dagli argomenti in python
- 17. Argomenti della stringa nel multiprocesso di Python
- 18. Come ripetere gli argomenti della funzione
- 19. Comando di reindirizzamento della stampa in script python tramite tqdm.write()
- 20. Come vedere la firma della funzione in Python?
- 21. Come analizzare gli argomenti della riga di comando in Python?
- 22. Come accedere agli argomenti della riga di comando in Python?
- 23. come mettere una funzione e gli argomenti in coda python?
- 24. Haskell Stampa linee in funzione
- 25. Trovare una dichiarazione di stampa in Python
- 26. Calcolo della derivata della funzione di densità cumulativa in Python
- 27. Argomenti della riga di comando Python (Windows)
- 28. come passare argomenti in funzione all'interno di una funzione in
- 29. Intervalli di stampa degli istogrammi in Python
- 30. Per ogni funzione della classe in python
E come stampare il valore di ritorno di ciascuna funzione tracciata? – river
Per catturare i valori restituiti, selezionare 'msg == 'return'', come da [docs] (https://docs.python.org/3.5/library/sys.html#sys.settrace). Il valore restituito sarà in 'arg'. – marc