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