20/20视野的日志

retrospect的Python项目详细描述


事后动态日志记录

经典的伐木期望完美的远见,但只有事后才是20/20!

用法

通过pip安装,然后输入shell:

defhello(a,b=2):"""docstring"""a=1c=b*2a=b=c=a*2+b*cprint('output: a={} b={} c={}'.format(a,b,c))returna,b,cimportretrospectretro=retrospect.FunctionRetrospector(hello)

现在您可以开始实时检查行:

>>>retro.implement(lines=True)>>>hello(10)((3,SetLineno,3),{'a':10,'b':2})((4,SetLineno,4),{'a':1,'b':2})((5,SetLineno,5),{'a':1,'b':2,'c':4})((6,SetLineno,6),{'a':10,'b':10,'c':10})output:a=10b=10c=10((7,SetLineno,7),{'a':10,'b':10,'c':10})((7,RETURN_VALUE,None),{'a':10,'b':10,'c':10})

或一组特定的行:

>>>retro.implement(lines=[4],boundaries=False)>>>hello(20)((4,SetLineno,4),{'a':1,'b':2})output:a=10b=10c=10

或仅在符号更改时:

>>>retro.implement(symbols=True,boundaries='start')>>>hello(30)((3,SetLineno,3),{'a':30,'b':2})((3,STORE_FAST,'a'),{'a':30,'b':2})((3,STORE_FAST,'a'),{'a':1,'b':2})((4,STORE_FAST,'c'),{'a':1,'b':2})((4,STORE_FAST,'c'),{'a':1,'b':2,'c':4})((5,STORE_FAST,'a'),{'a':1,'b':2,'c':4})((5,STORE_FAST,'a'),{'a':10,'b':2,'c':4})((5,STORE_FAST,'b'),{'a':10,'b':2,'c':4})((5,STORE_FAST,'b'),{'a':10,'b':10,'c':4})((5,STORE_FAST,'c'),{'a':10,'b':10,'c':4})((5,STORE_FAST,'c'),{'a':10,'b':10,'c':10})output:a=10b=10c=10

或特定的操作码:

>>>retro.implement(opcodes=['LOAD_CONST'],boundaries='finish')>>>hello(40)((3,LOAD_CONST,1),{'a':40,'b':2})((4,LOAD_CONST,2),{'a':1,'b':2})((5,LOAD_CONST,2),{'a':1,'b':2,'c':4})((6,LOAD_CONST,'output: a={} b={} c={}'),{'a':10,'b':10,'c':10})output:a=10b=10c=10((7,RETURN_VALUE,None),{'a':10,'b':10,'c':10})

或者返回到exact原始:

>>>retro.implement()>>>hello(50)output:a=10b=10c=10

以上任何一种都可以根据需要进行混合,例如lines=True, symbols="c"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Google应用程序引擎FreeMarker模板java。安全AccessControlException   在Java中,空字符串(“”)如何存储在内存中?   java如何使用PUT进行创建   java无法构造com的实例。谷歌。云数据存储。钥匙   Java递归中的堆栈溢出错误   java通过结构化设计模式重构冗余代码   javascript使用Selenium IDE 2.9.1上传文件   JAVAutil。扫描仪在Java中将文本文件加载到对象中   这个JAVA程序的时间复杂度是多少   java Springboot+tomcat+ssh=连接链路故障   矢量Java不安全操作   用于Java不同生成代码的协议缓冲区gRPC protobuf生成器   java OSGi为什么我的包命名为“unknown0.0.0”和MANIFEST。MF文件被覆盖了吗?   java日期保持为空(Android)   使用stax解析器java解析xml   java有一种方法可以在运行时确定对象是否是使用Lambdaj创建的。关于()方法?