如何打印每个函数/方法调用? 我试图使用:python -m trace --trace
,但它也打印函数内部代码...我只想要调用的函数名称。 在代码中使用回溯打印在调用命令本身之前调用的最后一个函数,并且代码包含许多类...python打印所有函数调用以知道脚本流程
2
A
回答
2
您可能会发现-l
有用。
main.py:
def foo():
pass
def bar():
pass
foo()
bar()
做
$ python -m trace -l main.py
输出
functions called:
filename: C:\Python34\lib\trace.py, modulename: trace, funcname: _unsettrace
filename: main.py, modulename: main, funcname: <module>
filename: main.py, modulename: main, funcname: bar
filename: main.py, modulename: main, funcname: foo
根据功能多少你有,你可能会发现一个装饰更适合:
def print_deco(func):
def inner(*args, **kwargs):
print(func.__name__)
return func(*args, **kwargs)
return inner
@print_deco
def foo():
pass
@print_deco
def bar():
pass
foo()
bar()
# foo
# bar
1
这里是名字player.py
的代码。
# player.py
def foo():
pass
def bar():
foo()
def car():
bar()
pass
car()
执行从像$python -m trace -T player.py
的终端的命令,这让我下面的输出。对于相同的输出,您也可以使用--trackcalls
而不是-T
。并且该命令显示通过运行该程序暴露的调用关系。
calling relationships:
*** /usr/lib/python2.7/trace.py ***
trace.Trace.runctx -> trace._unsettrace
--> player.py
trace.Trace.runctx -> player.<module>
*** player.py ***
player.<module> -> player.car
player.bar -> player.foo
player.car -> player.bar
希望这会有所帮助。
更新1:
上述命令显示功能的关系。
为了跟踪功能,我们可以使用traceback
模块。在这个模块traceback.print_stack()
根据执行打印功能。但是我们必须记住,在我们编写traceback.print_stack()
的方法中,它只会打印该函数的轨迹。我会给你一个例子。
import traceback
def foo():
car()
pass
def bar():
foo()
def car():
traceback.print_stack()
pass
bar()
如果我们运行这个,我们可以看到下面的输出。
File "D:/python_practice36/player.py", line 10, in <module>
bar()
File "D:/python_practice36/player.py", line 6, in bar
foo()
File "D:/python_practice36/player.py", line 3, in foo
car()
File "D:/python_practice36/player.py", line 8, in car
traceback.print_stack()
如果我们称之为foo()
的traceback.print_stack()
那么我们可以看到追溯高达foo
。
import traceback
def foo():
car()
traceback.print_stack()
pass
def bar():
foo()
def car():
pass
bar()
和输出
File "D:/python_practice36/player.py", line 10, in <module>
bar()
File "D:/python_practice36/player.py", line 7, in bar
foo()
File "D:/python_practice36/player.py", line 4, in foo
traceback.print_stack()
相关问题
- 1. 在php脚本中打印所有函数调用
- 2. 脚本打印所有零
- 3. 打印所有JavaScript函数
- 4. 如何打印传递给python脚本的所有参数?
- 5. 如何打印通知松懈通过调用python函数
- 6. python子进程调用bash脚本 - 也需要打印报价
- 7. Python脚本打印nslookup
- 8. 打印出Python脚本中的所有代码
- 9. 我的脚本在不调用函数的情况下打印函数
- 10. Python可以打印函数定义吗?
- 11. 带有可变延迟的打印函数调用/ Python
- 12. 的Python:打印所有namedtuples
- 13. 打印所有组合,python
- 14. 打印所有在Python REPL
- 15. 从python脚本中调用java函数
- 16. 从bash脚本调用python函数
- 17. 从shell脚本中调用python函数
- 18. Plone从login_next脚本调用python函数
- 19. PHP脚本exec bash脚本不打印所有bash行
- 20. 如何在python的randrange函数中打印所有随机数
- 21. python脚本可以知道Android环境中C++主函数的返回值
- 22. 是否可以在php中打印所有被调用的类和函数?
- 23. 如何知道python脚本被调用的目录?
- 24. 如何知道调用另一个函数的函数所在的脚本名称?
- 25. Python脚本打印使用os.system的输出打印
- 26. php:以“*”为参数调用python脚本
- 27. python错误打印函数
- 28. Hadoop的流调用Python脚本
- 29. 脚本不打印字数
- 30. 从子流程管道打印使用结束参数时,Python不会打印任何内容
'蟒蛇-m按照字母顺序而不是调用顺序跟踪-l main.py'prints。 添加装饰器不是一个选项...太多的函数和类,我没有写代码。谢谢 –