Найти - Пользователи
Полная версия: Макросы, как в С++
Начало » Python для новичков » Макросы, как в С++
1
Alexey1987
Здравствуйте, есть-ли в 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)
doza_and
http://docs.python.org/library/inspect.html
Alexey1987
doza_and - спасибо!
а с #define возможно что-нибудь намудрить, или все-таки нет?
doza_and
#define в питоне нету. Однако попробуйте придумать такой define который невозможно или сложно представить другими средствами питона. Тогда и можно будет обсуждать этот вопрос.
А информацию которую вы хотели получить макросом легко получите кодом
1/0
или

import inspect
def tr(msg):
print __file__,inspect.stack()[1][0].f_lineno,msg
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB