In C/C++, l'ho trovata spesso utile durante il debug per definire una macro, ad esempio ECHO(x)
, che stampa il nome della variabile e il suo valore (ad esempio ECHO(variable)
potrebbe stampa variable 7
). È possibile ottenere il nome della variabile in una macro utilizzando l'operatore 'stringification' #
come descritto here. C'è un modo per farlo in Python?Trova il nome di una variabile Python passata a una funzione
In altre parole, vorrei una funzione
def echo(x):
#magic goes here
che, se chiamato come foo=7; echo(foo)
(o foo=7; echo('foo')
, forse), sarebbe stampare foo 7
. Mi rendo conto che è banale farlo se passo sia la variabile che il suo nome alla funzione, ma uso molte funzioni come questa durante il debug, e la ripetizione finisce sempre per irritarmi.
Questa seconda soluzione è estremamente intelligente. Mentre sto lavorando su come funziona, ho trovato una domanda doppia [qui] (http://stackoverflow.com/questions/5503363/can-you-translate-this-debugging-macro-from-c-to-python) - sebbene la tua regex è un po 'più robusta della risposta simile data lì. – James
ottima risposta, grazie. potresti spiegare brevemente come funziona la regex? – Ferguzz
@Ferguzz, Cerca 'echo', quindi' \ s * '- 0 o molti spazi,' \ ('- parentesi,' (. +?) \) $ '- ricerca di non-greddy per tutti i simboli prima' \) '(parentesi) alla fine della riga (' $ '). Maggiori informazioni su http://www.regular-expressions.info/repeat.html. Puoi anche [eseguire il debug regexps] (http://stackoverflow.com/a/143636/1052325). Prova nella sessione interattiva di Python: 're.compile (r'echo \ s * \ ((. +?) \) $ ', Re.DEBUG)' – reclosedev