【发布时间】:2020-04-27 17:23:03
【问题描述】:
如何在 python 中检测或捕获全局变量的值变化
variable = 10
print(variable)
variable = 20
# Detect changes to the value using a signal to trigger a function
更新 AST 文档 - 很好的介绍 https://greentreesnakes.readthedocs.io/en/latest/
【问题讨论】:
-
我不知道python是否可以做到这一点,但
tkinter为此使用类-即。IntVar()使用get()/set()处理数据,但它也有tracer(callback)分配函数,这些函数将在值更改时执行。类似的类 -Properties- 使用Kivy。所以你可以创建自己的具有类似功能的类。 -
这是在独立脚本中,还是在更大的应用程序中?因为您可以在循环中使用异步进程来发送信号/标志以在下一个循环中捕获
-
独立脚本,我希望仅捕获变量值更改@Sparrow1029
-
如果你将它全部包装在一个while循环中并在每个循环的顶部检测是否有任何变化?抱歉,我对您尝试编写的脚本不了解更多,但通常您需要有一个单独的某种观察者/侦听器进程来检测变量的变化,这通常比单个脚本更复杂...
-
如果您只能捕获从其他模块应用的更改,是否可以接受?例如在模块
a中有一个全局variable,然后在模块b、import a; a.variable = 123中。这种特定情况更可行,因为您可以覆盖import a产生的模块对象,然后覆盖该对象的__setitem__。在那一点上,尽管您真的在竭尽全力做一些可能不应该做的事情
标签: python python-3.x variables global-variables globals