站长网 教程 操纵这个开源工具来看管 Python 中的变量

操纵这个开源工具来看管 Python 中的变量

副标题#e# 要使用它,你必须先用pip安装它: $ python3 -m pip install watchpoints 在Python中使用 watchpoints 对于任何一个你想监控的变量,使用watch函数对其进行监控。 from watchpoints importwatch a =0 watch(a) a =1 当变量发生变化时,它的值就会

副标题#e#

要使用它,你必须先用 pip 安装它:

$ python3 -m pip install watchpoints

在Python中使用 watchpoints

对于任何一个你想监控的变量,使用 watch 函数对其进行监控。

from watchpoints importwatch

 

a =0

watch(a)

a =1

当变量发生变化时,它的值就会被打印到标准输出:

======WatchpointsTriggered======

 

CallStack(most recent call last):

<module>(my_script.py:5):

> a =1

a:

0

->

1

信息包括:

变量被改变的行。

调用栈。

变量的先前值/当前值。

它不仅适用于变量本身,也适用于对象的变化:

from watchpoints importwatch

 

a =[]

watch(a)

a ={}#触发

a["a"]=2#触发

当变量 a 被重新分配时,回调会被触发,同时当分配给 a 的对象发生变化时也会被触发。

更有趣的是,监控不受作用域的限制。你可以在任何地方观察变量/对象,而且无论程序在执行什么函数,回调都会被触发。

from watchpoints importwatch

 

def func(var):

    var["a"]=1

 

a ={}

watch(a)

func(a)

例如,这段代码打印出:

======WatchpointsTriggered======

 

CallStack(most recent call last):

 

<module>(my_script.py:8):

> func(a)

func (my_script.py:4):

>var["a"]=1

a:

{}

->

{'a':1}

watch 函数不仅可以监视一个变量,它也可以监视一个字典或列表的属性和元素。

from watchpoints importwatch

 

classMyObj:

    def __init__(self):

        self.a =0

 

obj =MyObj()

d ={"a":0}

watch(obj.a, d["a"])#是的,你可以这样做

obj.a =1#触发

d["a"]=1#触发

这可以帮助你缩小到一些你感兴趣的特定对象。

如果你对输出格式不满意,你可以自定义它。只需定义你自己的回调函数:

watch(a, callback=my_callback)

 

#或者全局设置

 

watch.config(callback=my_callback)

当触发时,你甚至可以使用 pdb:

watch.config(pdb=True)

这与 breakpoint() 的行为类似,会给你带来类似调试器的体验。

如果你不想在每个文件中都导入这个函数,你可以通过 install 函数使其成为全局:

#p#副标题#e#

watch.install()#或watch.install("func_name"),然后以 func_name()方式使用

我个人认为,watchpoints 最酷的地方就是使用直观。你对一些数据感兴趣吗?只要“观察”它,你就会知道你的变量何时发生变化。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/video/2021/0527/7171.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部