W języku C/C++, często uważałem za przydatne podczas debugowania zdefiniowanie makra, na przykład ECHO(x)
, które wypisuje nazwę zmiennej i jej wartość (np. ECHO(variable)
może wydrukuj variable 7
). Nazwę zmiennej można uzyskać w makrze za pomocą operatora "uszeregowania" #
zgodnie z opisem here. Czy istnieje sposób na to w Pythonie?Znajdź nazwę zmiennej Pythona, która została przekazana do funkcji
Innymi słowy, chciałbym funkcję
def echo(x):
#magic goes here
które, jeśli nazywa się foo=7; echo(foo)
(lub foo=7; echo('foo')
, być może), by wydrukować foo 7
. Rozumiem, że jest to trywialne, jeśli przekazuję zarówno zmienną, jak i jej nazwę funkcji, ale często używam takich funkcji podczas debugowania, a powtarzanie zawsze mnie denerwuje.
To drugie rozwiązanie jest bardzo mądry. Podczas pracy nad tym, jak to działa, znalazłem zduplikowane pytanie [tutaj] (http://stackoverflow.com/questions/5503363/can-you-translate-this-debugging-macro-from-c-to-python) - choć twoje regex jest trochę bardziej solidne niż podobna odpowiedź tam podana. – James
świetna odpowiedź, dzięki. czy możesz krótko wyjaśnić, w jaki sposób działa regex? – Ferguzz
@Ferguzz, Wyszukuje 'echo', następnie' \ s * '- 0 lub wiele spacji,' \ ('- nawiasy,' (. +?) \) $ '- non-greddy szuka wszystkich symboli przed. \) '(nawiasy) na końcu wiersza (' $ '). Więcej informacji na http://www.regular-expressions.info/repeat.html. Można również [debugowanie wyrażeń regularnych] (http://stackoverflow.com/a/143636/1052325). Spróbuj w interaktywnej sesji Pythona: 're.compile (r'echo \ s * \ ((. +?) \) $ ', Re.DEBUG)' – reclosedev