J'ai utilisé inspect pour créer une fonction qui affiche une trace de pile.
hello_world.py
# -*- coding: utf-8 -*-
import inspect
def printmessage(message):
    record = inspect.stack()[1]
    frame = record[0]
    info = inspect.getframeinfo(frame)
    fn = str(info.filename).split('/')[-1]
    print '[TAG]' + fn + '#' + info.function + '(L:'+str(info.lineno) + ') : ' + message
def printstack():
    for num in range(len(inspect.stack())):
        if num == 0:
            continue
        record = inspect.stack()[num]
        frame = record[0]
        info = inspect.getframeinfo(frame)
        fn = str(info.filename).split('/')[-1]
        print '[TAG][' + str(num) + ']' + fn + '#' + info.function + '(L:'+str(info.lineno) + ')'
if __name__ == '__main__':
    printmessage('hogehoge')
    print ('-----------')
    printstack()
résultat
[TAG]hello_world.py#<module>(L:23) : hogehoge
-----------
[TAG][1]hello_world.py#<module>(L:25)
[TAG][2]visualstudio_py_util.py#exec_code(L:95)
[TAG][3]visualstudio_py_util.py#exec_file(L:119)
[TAG][4]visualstudio_py_debugger.py#debug(L:2624)
[TAG][5]visualstudio_py_launcher.py#<module>(L:91)
[référence] https://docs.python.jp/3/library/inspect.html
Recommended Posts