zoukankan      html  css  js  c++  java
  • Python 中取代 Printf 大法的工具

    「printf 大法」大概是最早期学到的 debug 方式?不同语言有不同的指令,在 Python 里对应的是 print指令 (加上%或是.format)。

    刚刚看到「 cool-RR/pysnooper 」这个 Python 上的工具,只要增加 @pysnooper.snoop这组 decorator,就可以自动帮你把变量的值打印出來。网站上的范例是这样,可以看到就只是加了一行 decorator:

      1. import pysnooper

      1. @pysnooper.snoop

      2. def number_to_bits(number):

      3. if number:

      4. bits =

      5. while number:

      6. number, remainder = divmod(number, 2)

      7. bits.insert(0, remainder)

      8. return bits

      9. else:

      10. return [0]

    1. number_to_bits(6)

    然后对应的 stderr 就有满满的资讯可以看:

    1. Starting var:.. number = 6

    2. 21:14:32.099769 call 3 @pysnooper.snoop

    3. 21:14:32.099769 line 5 if number:

    4. 21:14:32.099769 line 6 bits =

    5. New var:....... bits =

    6. 21:14:32.099769 line 7 while number:

    7. 21:14:32.099769 line 8 number, remainder = divmod(number, 2)

    8. New var:....... remainder = 0

    9. Modified var:.. number = 3

    10. 21:14:32.099769 line 9 bits.insert(0, remainder)

    11. Modified var:.. bits = [0]

    12. 21:14:32.099769 line 7 while number:

    13. 21:14:32.099769 line 8 number, remainder = divmod(number, 2)

    14. Modified var:.. number = 1

    15. Modified var:.. remainder = 1

    16. 21:14:32.099769 line 9 bits.insert(0, remainder)

    17. Modified var:.. bits = [1, 0]

    18. 21:14:32.099769 line 7 while number:

    19. 21:14:32.099769 line 8 number, remainder = divmod(number, 2)

    20. Modified var:.. number = 0

    21. 21:14:32.099769 line 9 bits.insert(0, remainder)

    22. Modified var:.. bits = [1, 1, 0]

    23. 21:14:32.099769 line 7 while number:

    24. 21:14:32.099769 line 10 return bits

    25. 21:14:32.099769 return 10 return bits

    另外还可以写到档案里里,可以指定允许的深度,或是直接指定要打印哪些变量。另外输出时,也可以指定 prefix 避免混淆(通常会用在 stderr,也只有 pysnooper 在输出时)

  • 相关阅读:
    【codeforces 723F】stSpanning Tree
    struts2.0中struts.xml配置文件详解
    存储过程中调用JAVA程序段
    本不该逃避
    利用js实现对页面的自动刷新
    [转]从硬盘安装 RedHat Enterprise Linux Server 5 iso
    正则表达式使用
    利用XmlBean轻松读写xml(转)
    Struts2+Spring2+Hibernate3 web应用示例(七)
    在DWR中实现直接获取一个JAVA类的返回值的两种方法
  • 原文地址:https://www.cnblogs.com/cuiyubo/p/10823576.html
Copyright © 2011-2022 走看看