Форум сайта python.su
можно ли внутри функции\метода узнать откуда он вызван? те из другой функции\метода или напрямую из модуля.. если да то как?
Офлайн
Удобного способа нет. Можно через inspect получить стек фреймов, inspect.stack(), а дальше с помощью ф-й в inspect определить их тип.
Офлайн
if __name__ == __main__
примерно так
Офлайн
sys._getframe().f_code.co_name
Офлайн
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():’)
Офлайн