Форум сайта python.su
0
Здравствуйте, есть-ли в Python функции/инструкции/etc которые возвращают номер строки, имя функции, имя файла из которого вызвались?
Как __LINE__ __PRETTY_FUNCTION__ __FILE__ в С++
И соответсвенно макросы в стиле С++-шного #DEFINE
(я понимаю, что питон - язык без понятия компиляции, но мало-ли, вдруг есть средства)
В общем случае надо сделать след штуку: (привожу аналог на С++)
void foo(const string &func, const string &file, int line, const string &msg)
{
cout << func << ‘ ’ << file << ‘ ’ << line “: ” << msg << endl;
}
#define DOPARSE(WHAT) foo(__PRETTY_FUNCTION__, __FILE__, __LINE__, WHAT)
Отредактировано (Март 21, 2012 11:30:57)
Офлайн
253
Офлайн
0
doza_and - спасибо!
а с #define возможно что-нибудь намудрить, или все-таки нет?
Офлайн
253
#define в питоне нету. Однако попробуйте придумать такой define который невозможно или сложно представить другими средствами питона. Тогда и можно будет обсуждать этот вопрос.
А информацию которую вы хотели получить макросом легко получите кодом
1/0
import inspect
def tr(msg):
print __file__,inspect.stack()[1][0].f_lineno,msg
Отредактировано (Март 22, 2012 19:41:52)
Офлайн