Найти - Пользователи
Полная версия: можно ли внутри функции\метода узнать откуда он вызван?
Начало » Python для экспертов » можно ли внутри функции\метода узнать откуда он вызван?
1
Evg
можно ли внутри функции\метода узнать откуда он вызван? те из другой функции\метода или напрямую из модуля.. если да то как?
Slava
Удобного способа нет. Можно через inspect получить стек фреймов, inspect.stack(), а дальше с помощью ф-й в inspect определить их тип.
sanook
if __name__ == __main__
примерно так
Lexander
sys._getframe().f_code.co_name
ds40a
import traceback

def p1():
for s in traceback.extract_stack():
print s

def p2():
p1()

def p3():
p2()

p3()

“выхлоп”

('.\\T.PY', 13, ‘<module>’, ‘p3()’)
('.\\T.PY', 11, ‘p3’, ‘p2()’)
('.\\T.PY', 8, ‘p2’, ‘p1()’)
('.\\T.PY', 4, ‘p1’, ‘for s in traceback.extract_stack():’)
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